我正在阅读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': '=' },
将对象分配给作用域时,您正在指令内创建一个隔离的作用域。这就是为什么$ scope.dialogIsHidden没有传递给指令,因此没有隐藏该元素的原因。
Kain建议使用$ parent调整小提琴,这说明了这一点。