ng-attr未更改为true

时间:2015-07-02 04:17:47

标签: javascript angularjs

我的输入看起来像这样:

<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,我希望我的指令不会被调用。

1 个答案:

答案 0 :(得分:0)

将directive参数设置为false并不意味着没有创建指令,这意味着您将一个变量传递给指令,该指令可以通过scope或attr检索。

虽然我不确定您是否可以动态激活指令,但您可以根据参数处理指令中的行为(例如关闭自身)。

.directive('existingItemValidator', function(){
  return function (scope, element, attr) {
    if (attr.existingItemValidator === false) return;

    // continue other ops.
  }
});

注意:如果您使用的是attr,则需要使用{{}}来传递参数