指令范围重写父值

directive scope rewrite parent value

本文关键字:重写 范围 指令      更新时间:2023-09-26

我写了指令:

   ensureUnique: function ($http, $parse) {
        return {
            scope: {
                ensureUniqueType: "=",
                ensureUniqueDisabled: "="
            },
         ...
        }
    },

但是如果我尝试像这样使用它:

<input name = "groupId" ng-show="anyFunction()" 
       type="text" ng-model="group.groupId" 
       ensure-unique="" ensure-unique-disabled="oldId != '-1'" ensure-unique-type="type" >

输入元素变得不可见(不依赖于任何函数结果)。似乎指令范围重写了ngShow值

你应该这样做ng-show="$parent.anyFunction()"因为该指令会创建一个新作用域。

之所以不可见,是因为函数anyFunction()undefined的,undefined将被ng-show指令中toBoolean()的函数计算为false。您可以参考此答案了解详细信息。