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-showng-hide 则不会。如果父作用域属性不能直接访问,请使用 $parent.property