一尘不染

为什么ng-hide无法与自定义指令一起使用?

angularjs

我正在阅读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': '='
  },

阅读 189

收藏
2020-07-04

共1个答案

一尘不染

将对象分配给作用域时,您正在指令内创建一个隔离的作用域。这就是为什么$ scope.dialogIsHidden没有传递给指令,因此没有隐藏该元素的原因。

Kain建议使用$ parent调整小提琴,这说明了这一点。

2020-07-04