2013-09-27 32 views
0

我写指令:指令范围重写父值

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" > 

input元素成为无形的(不依赖于anyFunction结果)。看起来,指令范围重写ngShow值

+0

编译有关ensureUniqueDisabled不是可分配表达式时,实际上应该给你一个错误。您正在使用'ensureUniqueDisabled:'='',但'='类型的绑定是为可指定的值生成的。 您正在寻找一个表达式,它是一个'&'绑定。 看看[指导指南](http://docs.angularjs.org/guide/directive)和ctrl-f搜索'&',然后阅读它。 您想拥有'ensureUniqueDisabled:'&''因为您只有一个表达式,而不是可分配的模型。 –

回答

1

您应该做ng-show="$parent.anyFunction()",因为该指令创建一个新的作用域。

之所以说它是不可见的是因为,由于功能anyFunction()undefinedundefined将被函数toBoolean()ng-show指令进行评估,以false。你可以参考这个answer的细节。