我的输入看起来像这样:
<input type="text" autocomplete="off" name="itemCode" ng-model="item.itemCode" class="form-control" ng-attr-existing-item-validator="mode=='Add'" required>
即使mode不等于'Add',也总是调用existing-item-validator指令,所以我试过
<input type="text" autocomplete="off" name="itemCode" ng-model="item.itemCode" class="form-control" ng-attr-existing-item-validator="isAddMode()" required>
但是,isAddMode永远不会在我的作用域上执行。如果我将输入更改为ng-attr-existing-item-validator =“{{isAddMode()}}”它确实执行,但即使isAddMode()返回false,仍然会调用existing-item-validator指令。 / p>
我是否在使用ng-attr属性做错了什么?如果它等于false,我希望我的指令不会被调用。
答案 0 :(得分:0)
将directive参数设置为false并不意味着没有创建指令,这意味着您将一个变量传递给指令,该指令可以通过scope或attr检索。
虽然我不确定您是否可以动态激活指令,但您可以根据参数处理指令中的行为(例如关闭自身)。
.directive('existingItemValidator', function(){
return function (scope, element, attr) {
if (attr.existingItemValidator === false) return;
// continue other ops.
}
});
注意:如果您使用的是attr,则需要使用{{}}
来传递参数