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

ng-if和ng-show / ng-hide有什么区别

裴欣然
2023-03-14
问题内容

我试图了解ng-ifng-show/ 之间的区别ng-hide,但对我来说它们看起来相同。

我应该记住使用一个或另一个来区别吗?


问题答案:

ngIf

ngIf指令根据表达式 删除或重新创建
DOM树的一部分。如果赋值为的表达式的ngIf计算结果为假值,则将元素从DOM中删除,否则将元素的克隆重新插入DOM中。

<!-- when $scope.myValue is truthy (element is restored) -->
<div ng-if="1"></div>

<!-- when $scope.myValue is falsy (element is removed) -->
<div ng-if="0"></div>

删除元素时,使用ngIf它的作用域将被销毁,并在恢复该元素时创建一个新的作用域。在内部创建的ngIf作用域使用原型继承从其父作用域继承

如果ngModel将其用于ngIf绑定到父范围内定义的JavaScript原语,则对子范围内的变量所做的任何修改都不会影响父范围内的值,例如

<input type="text" ng-model="data">
<div ng-if="true">
    <input type="text" ng-model="data">
</div>

要解决这种情况并从子作用域内部更新父作用域中的模型,请使用一个对象:

<input type="text" ng-model="data.input">
<div ng-if="true">
    <input type="text" ng-model="data.input">
</div>

或者,$parent引用父作用域对象的变量:

<input type="text" ng-model="data">
<div ng-if="true">
    <input type="text" ng-model="$parent.data">
</div>

ngShow

ngShow指令根据提供给属性的表达式 显示或隐藏 给定的HTML元素ngShow。通过删除ng- hideCSS类或将CSS类添加到元素,可以显示或隐藏该元素。的.ng- hideCSS类在AngularJS预先定义并设定的显示样式为无(使用!important标志)。

<!-- when $scope.myValue is truthy (element is visible) -->
<div ng-show="1"></div>

<!-- when $scope.myValue is falsy (element is hidden) -->
<div ng-show="0" class="ng-hide"></div>

ngShow表达式求falseng-hideCSS类被添加到class所述元件上的属性使其成为隐藏。如果为trueng- hide则从元素中删除CSS类,从而使该元素不显示为隐藏状态。



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

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

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

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

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

  • 问题内容: 想象一下可能会在网页上呈现的大量内容,例如图表。Angular提供2个选项来切换内容的可见性。 ng-show 将呈现内容,而不管其表达方式是什么,然后在事实之后简单地“隐藏”它。这是不理想的,因为用户在会话期间可能永远不会“打开”内容,因此渲染内容很浪费。 ng-if 在这方面更好。如果表达式为假,则用它代替ng- show可以防止首先显示大量内容。但是,它的优点也是缺点,因为如果用