热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ng-model抛出角度为1.3的输入类型编号的错误

如何解决《ng-model抛出角度为1.3的输入类型编号的错误》经验,为你挑选了3个好方法。

我有一个输入字段,我希望他用户输入一个数字,所以我创建了一个type ="number"的输入字段.

当我在1.2中使用它时,我没有错误

    
    
        
{{person | json }}
name:
pts:

http://codepen.io/anon/pen/dPKgVL

但是当我在1.3中使用它时,我得到错误:[ngModel:numfmt]但是当我更新数字时,它似乎仍然绑定到范围.

    
    
        
{{person | json }}
name: name:
pts:

http://codepen.io/anon/pen/YPvJro

我在这里做错了什么或者这没什么好担心的?当我尝试调试其他问题时,我宁愿不在控制台中出现错误



1> KyleM..:

添加此项以解决问题:

myApp.directive('input', [function() {
    return {
        restrict: 'E',
        require: '?ngModel',
        link: function(scope, element, attrs, ngModel) {
            if (
                   'undefined' !== typeof attrs.type
                && 'number' === attrs.type
                && ngModel
            ) {
                ngModel.$formatters.push(function(modelValue) {
                    return Number(modelValue);
                });

                ngModel.$parsers.push(function(viewValue) {
                    return Number(viewValue);
                });
            }
        }
    }
}]);


如果你没有完全控制你的JSON模型,这很方便(例如,我也必须支持该属性中的字符串,因此将其更改为整数类型对我来说不起作用).

2> net.uk.sweet..:

pts属性定义为number而不是string:

var app = angular.module('app', []);
app.controller('MainCtrl', ['$scope', function ($scope) {
    $scope.person = [
        {"name": "Alex","pts": 10}
    ];
}]);



3> chrmcpn..:

该指令将为任何类型为"number"的输入解析字符串值.那你就不会有错误:

module.directive('input', function(){
    return {
        require: 'ngModel',
        link: function(scope, elem, attrs, ngModel){
            if(attrs.type == 'number'){
                ngModel.$formatters.push(function(value){
                    return parseFloat(value);
                });
            }
        }
    };
});


推荐阅读
author-avatar
坚强的浅悠轩_871
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有