一尘不染

什么时候支持ng-if和ng-show / ng-hide?

angularjs

我了解这一点,ng-showng-hide会影响在元素上设置的类,并ng-if控制是否将元素呈现为DOM的一部分。

有没有对选择的准则ng-ifng-show/ ng-hide或反之亦然?


阅读 267

收藏
2020-07-04

共1个答案

一尘不染

取决于您的用例,但总结不同之处:

  1. ng-if将从DOM中删除元素。这意味着您所有的处理程序或所有附加到这些元素的内容都将丢失。例如,如果将单击处理程序绑定到子元素之一,ng-if则将其评估为false时,将从DOM中删除该元素,并且即使ng-if稍后将其评估为true并显示该元素,您的单击处理程序也将不再起作用。您将需要重新附加处理程序。
  2. ng-show/ng-hide不会从DOM中删除元素。它使用CSS样式隐藏/显示元素(注意:您可能需要添加自己的类)。这样,您的依附在孩子身上的管理者将不会丢失。
  3. ng-if创建一个子范围,而ng-show/ng-hide没有

与相比,不在DOM中的元素对性能的影响较小,并且ng-if与相比,您的Web应用可能看起来更快ng-show/ng- hide。根据我的经验,差异可以忽略不计。当同时使用ng-show/ng-hide和时ng- if,可以使用动画,并且在Angular文档中都可以使用示例。

最终,您需要回答的问题是是否可以从DOM中删除元素?

2020-07-04