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

替代ng-show / hide或如何仅加载DOM的相关部分

颜文康
2023-03-14
问题内容

使用ng-show / hide时,这些块中包含的内容最初会显示在用户屏幕上。仅在几毫秒后(加载并执行angular.js之后),ng-
show中才会显示正确的块。

是否有比ng-show / hide更好的方法来仅将数据的相关部分加载到DOM中?

ng-view的问题在于,我在页面上只能有一个,因此我必须根据当前状态来切换DOM的许多部分的行为。


问题答案:

为了避免“未编译内容闪烁”,请使用ng-
bind
代替{{}}或使用ng-
cloak

<span ng-cloak ng-show="show">Hello, {{name}}!</span>

如果您使用ng-cloak,并且没有在HTML的头部加载Angular.js,则需要将其添加到CSS文件中,并确保将其加载到页面顶部:

[ng\:cloak], [ng-cloak], .ng-cloak { display: none; }

请注意,您只需要在初始页面上使用这些指令。稍后(例如,通过ng-include,ng-view等)拉入的内容将由Angular编译,然后再呈现浏览器。

除了ng-show / hide之外,还有没有更好的方法来加载数据,在该方法中,仅将相关部分加载到DOM中。

ng-show / ng-hide的一些替代方法是ng-
include,ng-
switch和(自v1.1.5起)ng-
if:

<div ng-include src="someModelPropertySetToThePartialYouWantToLoadRightNow"></div>

请注意,ng-switch和ng-if添加/删除DOM元素,而ng-show / hide仅更改CSS(如果这对您很重要)。



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

  • 问题内容: 我是AngularJS的新手,所以对于我的问题可能有一个简单的解决方案。我一直在处理这种形式。我有两个输入- 一个用于门的数量,一个用于窗户的数量。然后,我要显示几个div,如果它们满足一定数量的门窗总数。当我在输入中输入数字时,ng-show解析为“ true”。但是该元素上仍然具有“ ng-hide”类,因此仍将其隐藏。 这是我的代码示例: 这是我输入3门和4窗口时的输出: 问题答

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

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

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

  • 问题内容: 我试图使用 AngularJS 提供的和函数显示/隐藏一些HTML 。 **** 根据文档,这些功能的各自用法如下: ngHide – {表达式}-如果表达式为true,则分别显示或隐藏该元素。ngShow – {表达式}-如果表达式为真,则分别显示或隐藏该元素。 这适用于以下用例: 但是,如果我们使用对象中的参数作为表达式,则和被赋予正确的/ 值,但这些值不会被视为布尔值,因此始终返