我需要动态更改遮罩。
所以我正在制定这个指令来处理它:
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,但是没有任何效果。
我在这里缺少什么?
答案 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 (..)
。