当前位置: 首页 > 面试题库 >

角ng-if和ng-show组合

裴嘉良
2023-03-14
问题内容

想象一下可能会在网页上呈现的大量内容,例如图表。Angular提供2个选项来切换内容的可见性。

ng-show
将呈现内容,而不管其表达方式是什么,然后在事实之后简单地“隐藏”它。这是不理想的,因为用户在会话期间可能永远不会“打开”内容,因此渲染内容很浪费。

ng-if 在这方面更好。如果表达式为假,则用它代替ng-
show可以防止首先显示大量内容。但是,它的优点也是缺点,因为如果用户隐藏该图表然后再次显示它,则每次都会从头开始呈现内容。

我该如何制定一个兼顾两全其美的指令?这意味着它会像ng-if一样工作,直到第一次渲染内容为止,然后切换为像ng-show一样工作,以防止每次都重新渲染它。


问题答案:

丹尼斯(Denis)的答案+1,但仅出于完整性考虑,它甚至可以通过将逻辑保留在视图中而不会“污染”控制器来进一步简化:

<button ng-click="show = !show">toggle</button>
<div ng-if="once = once || show" ng-show="show">Heavy content</div>

矮人

编辑: 以上版本可以通过一次绑定进一步改进(和简化),以减少不必要的$ oncewatch-这仅适用于Angular 1.3+:

<div ng-if="::show || undefined" ng-show="show">Heavy content</div>

undefined需要,以确保观看值不“稳定”成为前true。一旦价格稳定下来,它也将失去$ watch,因此不会受到进一步更改的影响show



 类似资料:
  • 问题内容: 我试图了解和/ 之间的区别,但对我来说它们看起来相同。 我应该记住使用一个或另一个来区别吗? 问题答案: ngIf 该指令根据表达式 删除或重新创建 DOM树的一部分。如果赋值为的表达式的计算结果为假值,则将元素从DOM中删除,否则将元素的克隆重新插入DOM中。 删除元素时,使用它的作用域将被销毁,并在恢复该元素时创建一个新的作用域。在内部创建的作用域使用原型继承从其父作用域继承。 如

  • 问题内容: 我了解这一点,并会影响在元素上设置的类,并控制是否将元素呈现为DOM的一部分。 有没有对选择的准则在/ 或反之亦然? 问题答案: 取决于您的用例,但总结不同之处: 将从DOM中删除元素。这意味着您所有的处理程序或所有附加到这些元素的内容都将丢失。例如,如果将单击处理程序绑定到子元素之一,则将其评估为false时,将从DOM中删除该元素,并且即使稍后将其评估为true并显示该元素,您的单

  • 我试图理解ng if和ng show之间的区别,但在我看来它们是一样的。 选择使用其中一种或另一种有什么区别吗?

  • 我知道和会影响元素上的类集,并且控制元素是否呈现为DOM的一部分。 是否有关于选择ng(如果)而不是ng(显示)或ng(隐藏)的指南?

  • 本文向大家介绍angular中ng一if和ng-show/hide 有什么区别?相关面试题,主要包含被问及angular中ng一if和ng-show/hide 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 1.ng一if 在后面表达式为 true 的时候才创建这个 dom 节点,ng一show 是初始时就创建了,用 display:block 和 display:none 来控制显示和不

  • 问题内容: 我有一个视图,其中父div上具有ng-if,而某些子元素上具有ng-show。嵌套在带有ng-if的元素下时,ng- show似乎无法正常工作。这是Angular错误还是我做错了什么? 见这个矮子。 HTML: JavaScript: 谢谢, 安迪 问题答案: 与指令不同,它 创建了一个新的作用域* 。 * 因此,当您在内部编写内容时,您是在子范围而非主范围上设置属性。 要解决此问题,