首页 文章

在AngularJS中的输入字段上应用数字过滤器

提问于
浏览
2

我们如何在输入字段上应用数字过滤器?我在非输入字段上显示工作正常 . 但是,当我在输入字段上设置过滤器时,我收到一个错误 .

<input type="number" name="input" ng-model="value2 | number:2"
             min="0" max="99" size="20">

错误:[ngModel:numfmt] http://errors.angularjs.org/1.3.8/ngModel/numfmt?p0=98.77错误(本机)http://ajax.googleapis.com/ajax/libs/angularjs /1.3.8/angular.min.js:6:416

这是一个测试的插件 . number format

2 回答

  • 1

    您无法将 filter 应用于 ng-model .

    具体请参阅此答案(未标记为 the 答案)以获取更多信息:https://stackoverflow.com/a/14425022/1452497

    短而甜蜜:

    ... AngularJS输入和ngModel指令的意图是无效输入永远不会在模型中结束 . 该模型应始终有效 .

    还要考虑 ng-model 中的表达式需要从解析器中分配 .

    ng-model="testA" 最终分解为: testA = some-input-value

    这不会起作用: testA | number:2 = some-input-value

    您应该使用 formatterparser (在视图之外) .

  • 1
    This error: 
    Error: [ngModel:numfmt] http://errors.angularjs.org/1.3.5/ngModel/numfmt?p0=1
    check your model: don't using $scope.mymodel = '1';
    to use $scope.mymodel = 1;
    

    该指令仅验证输入数字 .

    angularMainModule.directive('onlyNumbers', function() {
        return function(scope, element, attrs) {
            var keyCode = [8,9,37,39,48,49,50,51,52,53,54,55,56,57,
                         96,97,98,99,100,101,102,103,104,105,110];
            element.bind("keydown", function(event) {
                if($.inArray(event.which,keyCode) == -1) {
                     scope.$apply(function(){
                         scope.$eval(attrs.onlyNumbers);
                         event.preventDefault();`enter code here`
                     });
                     event.preventDefault();
                }
            });
        };
    });
    

相关问题