正如我最近发现的那样,ngSwitch的行为有点类似于ngIf,因为它直接从DOM中删除了元素,而不仅仅是隐藏它们。现在,在我的应用程序中,这既使我感到不必要的昂贵又是潜在的问题(如果我需要访问隐藏的DOM元素的属性)。同时,我喜欢ngSwitch语法的整洁性,而不是一堆不同的ngShow指令(这也不允许我包含“默认”行为)。有什么办法可以修改此指令的工作方式,使其仅隐藏元素,而不是完全删除它们?谢谢。

最佳答案

好的,我更好地了解了您的需求,之前我也有同样的需求。
我建议您将ngSwitch与这样的自定义指令一起使用:

<div ng-switch="mode">
  <directive-a ng-switch-when="a"></directive-a>
  <directive-b ng-switch-when="b">...</directive-b>
  <directive-c ng-switch-default>...</directive-c>
</div>


在指令A,指令B和指令C的定义中,您使用templateUrl,这将使用指令第二次调用中的缓存。

第二种方法是在每个指令上使用ng-show,但是我更喜欢ng-switch,因为它可以使dom更轻。

关于javascript - Angular.js:ngSwitch显示/隐藏而不是添加/删除DOM元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46523091/

10-14 04:32