AngularJS动态更改ngMask

时间:2015-05-05 12:51:33

标签: javascript angularjs angularjs-directive mask

我需要动态更改遮罩。

所以我正在制定这个指令来处理它:

link: function($scope, $element, $attrs, ngModel) {
    $scope.$watch($attrs.ngModel, function(value) {
        if (value.length > 4) {
            $element.attr('mask', '9999  9999');
        } 
        else {
            $element.attr('mask', '99999999');
        }
    });
}

正在应用蒙版,我正在检查DOM,但是没有任何效果。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

你可以在dom而不是链接中执行该逻辑吗?捣乱attr可能不会做任何事情,因为它已被解析,可能没有看到它。

ng-model="maskModel" mask="{{ maskModel.length > 4 ? '9999  9999' : '99999999' }}"

答案 1 :(得分:2)

我知道这不是你问的问题,但可能有助于其他人来到这里。一个很好的选择是定义一个可选字符。要做到这一点,只需添加一个'?'在您想要成为可选字符之后:

mask="9?9999-9999"

这非常适合巴西电话号码等输入,可以包含8个或9个字符。

答案 2 :(得分:0)

使用attrs.$observe(..)代替$scope.$watch (..)