app .directive('ngCurrency', function() { return { restrict: 'A', require: '?ngModel', link: function(scope, element, attrs, ngModel) { if (!ngModel) return; var options = scope.$parent.$eval(attrs.ngCurrency); var defaultOptions = { min: 0, round: false, //max: 9999, step: 1, start: 1, numberFormat: "C" }; options = angular.extend({}, defaultOptions, options); element.spinner(options); ngModel.$render = function() { element.spinner("value", ngModel.$viewValue || ''); }; element.bind('spin', function(event, v) { scope.$apply(function() { ngModel.$setViewValue(v.value); }); }); element.bind('change blur', function(event) { scope.$apply(function() { var tv = ngModel.$modelValue || ''; var value = Globalize.parseFloat(tv + '', 10, element.spinner("option", "culture")); ngModel.$setViewValue(value); element.spinner("value", value); }); }); ngModel.$formatters.unshift(function(modelValue) { element.spinner("value", modelValue || ''); }); } }; });