【备忘录】ng添加货币符号自定义指令

'use strict';

/**
 * currency
 * usage:
 * <input type="text" ng-model="money" currency symbol="$" />
 * symbol为可选currency
 */

angular.module('my-currency', [])
.directive('currency', ['$filter', function($filter){
    return {
        require: 'ngModel',
        link: function(scope, elem, attrs, ctrl){
            ctrl.$formatters.push(parseCurrency);

            ctrl.$parsers.push(function(value){
                var num = value.replace(/[^0-9.]/g, ''),
                    result = parseFloat(num);
                return isNaN(result) ? undefined : result;
            });

            elem.bind('blur', function(){
                ctrl.$viewValue = parseCurrency();
                ctrl.$render();
            });

            function parseCurrency(){
                var symbol = attrs.symbol || '¥';
                return $filter('currency')(ctrl.$modelValue, symbol);
            }
        }
    }
}]);

 

posted @ 2014-11-03 11:36  xiaoroad  阅读(183)  评论(0编辑  收藏  举报