ng-if vs ng-show
这些功能在行为上非常相似。区别在于 ng-if
从 DOM 中删除元素。如果有大部分代码无法显示,那么 ng-if
就是你要走的路。ng-show
只会隐藏元素,但会保留所有处理程序。
NG-如果
ngIf 指令根据表达式删除或重新创建 DOM 树的一部分。如果分配给 ngIf 的表达式求值为 false 值,则从 DOM 中删除该元素,否则将元素的克隆重新插入 DOM。
NG-秀
ngShow 指令根据提供给 ngShow 属性的表达式显示或隐藏给定的 HTML 元素。通过删除或添加 ng-hide CSS 类到元素上来显示或隐藏元素。
例
<div ng-repeat="user in userCollection">
<p ng-if="user.hasTreeLegs">I am special
<!-- some complicated DOM -->
</p>
<p ng-show="user.hasSubscribed">I am aweosme
<!-- switch this setting on and off -->
</p>
</div>
结论
这取决于使用类型,但通常一个比另一个更合适(例如,如果 95%的时间不需要元素,请使用 ng-if
;如果需要切换 DOM 元素的可见性,请使用 ng-show
)。
如有疑问,请使用 ng-if
并测试!
注意 :ng-if
会创建一个新的隔离范围,而 ng-show
和 ng-hide
则不会。如果父作用域属性不能直接访问,请使用 $parent.property
。