角度摘要周期不是第一次运行

时间:2017-03-28 11:10:27

标签: javascript angularjs

以下是JSFIDDLE.

在文本框中第一次按下按键,符号对我的ng-model有效,因为element(blur)。如何删除第一个按键本身的符号。

app.directive('format', ['$filter', function ($filter) {
    return {
        require: 'ngModel',
        scope: { 
        val : '=val'
        },
        link: function (scope, elem, attrs, ctrl) {

            if (!ctrl) return;
            ctrl.$formatters.unshift(function (a) {

            if(attrs.symbol == '$')
             return $filter(attrs.format)(ctrl.$modelValue, '$')
             else
                return $filter(attrs.format)(ctrl.$modelValue)
            });
            elem.bind('blur', function(event) {

            var a = elem.val();            
            var plainNumber = a.split('.').filter(function(e){
                return (e.length > 0);            
            }).join('.');
            var i = 0;
            if(isNaN(parseFloat(plainNumber))){
            i = (attrs.symbol == '$') ? 1 : 3;
            }
            var num = plainNumber.substring(i, plainNumber.length).replace(/,/g,'');
            if(attrs.symbol == '$')
            elem.val($filter('currency')(num, attrs.symbol));
            else
              elem.val($filter('currency')(num));                
            var n =parseFloat(num);
            scope.val = Number(n);
            if(!scope.$$phase) {
                scope.$apply();
             }
            });
        }
    };

    // controller 
}])

当按键符号影响ng-model时。当我点击外面时,符号不会影响ng-model。我想删除第一个按键的符号

我是angularjs的新手。请帮帮我。

更新

在文本框中输入包含符号的ng-model。当我在文本框外面单击时,它将删除符号而不影响ng-model。我想要的是,当输入值时,只有ng-model不应包含该符号。

0 个答案:

没有答案