Angular指令:在将其绑定到模型之前验证值

时间:2015-11-16 06:18:14

标签: angularjs angularjs-directive

有没有办法不将值绑定到模型,只有在值有效时才将它绑定到模型。

1 个答案:

答案 0 :(得分:1)

使用$parsers。以下示例仅限制您的模型输入数字。显然,您可以将其更改为使您的输入有效所需的任何内容。

angular.module('app').
directive('onlyDigits', function () {

    return {
        restrict: 'A',
        require: '?ngModel',
        link: function (scope, element, attrs, modelCtrl) {
            modelCtrl.$parsers.push(function (inputValue) {
                if (inputValue == undefined) return '';
                var transformedInput = inputValue.replace(/[^0-9]/g, '');
                if (transformedInput !== inputValue) {
                    modelCtrl.$setViewValue(transformedInput);
                    modelCtrl.$render();
                }
                return transformedInput;
            });
        }
    };
});

<input type="text" name="number" only-digits>

Code sample comes from this SO question