我正在阅读angularjs.org开发者指南的指令部分,以更新我的知识并获得一些见解,我试图运行其中一个示例,但指令ng-hide不适用于自定义指令。
这里是jsfiddle:http://jsfiddle.net/D3Nsk/:
<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog()">
Does Not Work Here!!!
</my-dialog>
<div ng-hide="dialogIsHidden">
It works Here.
</div>
有关为何发生这种情况的任何想法?
解决方案
似乎标签上的变量dialogIsHidden已经作出参考 指令内的范围变量而不是控制器中的变量;特定 该指令具有自己的曝光范围,使这项工作成为必要 通过引用控制器的变量dialogIsHidden到指令。
这里是jsfiddle: http://jsfiddle.net/h7xvA/
更改时间:
<my-dialog
ng-hide="dialogIsHidden"
on-close="hideDialog()" dialog-is-hidden='dialogIsHidden'>
和
scope: {
'close': '&onClose',
'dialogIsHidden': '='
},
答案 0 :(得分:9)
在将对象指向范围时,您将在指令中创建一个隔离范围。这就是$ scope.dialogIsHidden未传递给指令的原因,因此该元素不会被隐藏。
Kain建议使用$ parent调整小提琴,这说明了这一点。
答案 1 :(得分:8)
你可以改变
<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog()">
到
<my-dialog ng-hide="$parent.dialogIsHidden" on-close="hideDialog()">