将十进制值转换为整数的指令

时间:2015-09-17 02:34:12

标签: angularjs

我正在尝试创建一个指令,将numeric值转换为integer

例如,我有输入类型编号,当用户键入1.1时,该值应该转换回1.

app.directive('toInteger', function() {
    return {
        require: 'ngModel',
        link: function(scope, elem, attrs, ngModel) {
            ngModel.$parsers.push(function(value) {
                var value = parseInt(value);
                return value;
            });
        }
    };
});

我哪里错了?

问题: 如果我输入1.1而不是指令将其转换回1。但是,它会继续在视图上显示1.1(在输入字段内)。

我正在使用我的html指令,如下所示

<input type="number" name="input" class="form-control" min="0" max="1000" data-ng-model="input" to-integer>

1 个答案:

答案 0 :(得分:2)

我已经更改了指令,根据您的要求,它的工作正常。请使用此

app.directive('toInteger', function ($parse) {
return {
    require: 'ngModel',
    link: function (scope, elem, attrs, ngModel) {

        ngModel.$parsers.push(function (value) {
            var value = parseInt(value);
            $parse(attrs.ngModel).assign(scope, value);
            scope.$apply();

        });
    }
};});