angularjs - 如何在具有隔离范围的指令上使用ng-show

标签 angularjs

我有一个像这样使用的指令:

<dir model="data"></dir>

该指令具有隔离范围。
scope :{
  model:'='
}

现在,我尝试使用页面的$ scope的另一个属性在该指令上使用ng-show,如下所示:
<dir ng-show="show" model="data"></dir>

但这是行不通的,因为该指令试图在自己的作用域中查找show属性。

我不希望指令知道它的容器可能选择隐藏它的事实。

我发现的解决方法是将指令包装在<div>中并在该元素上应用ng-show,但是我不喜欢这迫使我使用的额外元素:
<div ng-show="show" >
  <dir model="data"></dir>    
</div>

有更好的方法吗?

看到这个矮人:http://plnkr.co/edit/Q3MkWfl5mHssUeh3zXiR?p=preview

最佳答案

您可以考虑迁移到Angular 1.2或更高版本。 The isolate scope is now only exposed to directives with a scope property。这意味着ng-show不再受您的指令的影响,您可以完全像尝试执行此操作一样编写它:

<dir ng-show="show" model="data"></dir>

@ Angular-Developers:很好,伙计们!

关于angularjs - 如何在具有隔离范围的指令上使用ng-show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747225/

相关文章:

javascript - 为什么嵌套的 ng-grid 高度不起作用?

javascript - 在指令中使用 templateUrl 会卡住应用程序

angularjs - 如何从 AngularJS 到 Firebase 添加、删除和编辑数组中的新对象

html - Angularjs 选择对象的 ng-model 绑定(bind)

javascript - AngularJS 范围不一致

javascript - Angular Directive(指令)双向绑定(bind)不起作用

angularjs - 在指令中编译另一个指令不起作用

angularjs - 滚动页面时如何隐藏元素?

javascript - 哪些形式的 JavaScript 适合中级 Rails 开发人员(仅团队中的开发人员)?

javascript - Angular ng-if 过滤结果