element.val在$ parsers中不起作用

时间:2014-05-27 10:41:07

标签: angularjs angularjs-directive

我为数字输入制作了一个不允许非数字字符的指令。 在

中回答

How to allow only a number (digits and decimal point) to be typed in an input?

 var app = angular.module('myApp', []);

    app.controller('MainCtrl', function($scope) {
    });

    app.directive('validNumber', function() {
      return {
        require: '?ngModel',
   priority: 1,
        link: function(scope, element, attrs, ngModelCtrl) {
          if(!ngModelCtrl) {
            return; 
          }

          ngModelCtrl.$parsers.push(function(val) {
            var clean = val.replace( /[^0-9]+/g, '');
            if (val !== clean) {
              ngModelCtrl.$setViewValue(clean);
              ngModelCtrl.$render();
            }
            return clean;
          });   

        }
      };
    });
这是有效的。 当我替换代码

if (val !== clean) {
          ngModelCtrl.$setViewValue(clean);
          ngModelCtrl.$render();
        }

使用:

 element.val(clean);

它并不总是有效。

似乎正在调用element.val(clean),但有些东西会覆盖它。 有人可以解释一下吗?

0 个答案:

没有答案