`

ng-if与ng-show、ng-hide指令的区别

 
阅读更多

angularJS中的ng-show、ng-hide、ng-if指令都可以用来控制dom元素的显示或隐藏。ng-show和ng-hide根据所给表达式的值来显示隐藏HTML元素。当赋值给ng-show指令的值为false时元素会被隐藏,值为true时元素会显示。ng-hide功能类似,使用方式相反。元素的显示或隐藏是通过改变CSS的display属性值来实现的。

 

 

ng-if指令可以根据表达式的值在DOM中生成移除一个元素。如果赋值给ng-if的表达式的值是false,那对应的元素将会从DOM中移除,否则生成一个新的元素插入DOM中。ng-if同no-show和ng-hide指令最本质的区别是,它不是通过CSS显示或隐藏DOM节点,而是删除或者新增结点。

例如我正在做的购物车在付款界面是,在有优惠商品时,这个节点的ng-if=true,则会显示优惠清单,没有就不会。



 

 

 

ng-if重新创建元素时用的是它们编译后的状态。如果ng-if内部的代码加载之后被jQuery修改过(例如用.addClass),那么当ng-if的表达式值为false时,这个DOM元素会被移除,表达式再次成为true时这个元素及其内部的子元素会被重新插入DOM,此时这些元素的状态会是它们的原始状态,而不是它们上次被移除时的状态。也就是说无论用jQuery的.addClass添加了什么类都不会存在了。而ng-show和ng-hide则可以保留dom元素上次修改后的状态。

当一个元素被ng-if从DOM中移除,同它关联的作用域也会被销毁。而且当它重新加入DOM中时,会通过原型继承从它的父作用域生成一个新的作用域。也就是说ng-if会新建作用域,而ng-show和ng-hide则不会。

 

  • 大小: 5.5 KB
  • 大小: 3 KB
分享到:
评论

相关推荐

    Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程

    本文将详细介绍三个常用的Angular指令:ng-if、ng-show/ng-hide以及ng-switch,它们都是用来处理页面内容显示和隐藏的。 1. ng-if: ng-if指令根据指定表达式的值来决定是否在DOM中渲染对应的元素。如果表达式结果...

    Angular.js中ng-if、ng-show和ng-hide的区别介绍

    在Angular.js中,ng-if、ng-show和ng-hide都是用于控制页面元素的可见性,但它们在实现方式和效果上存在显著的差异。首先,让我们深入理解这些指令的工作原理。 **ng-show 和 ng-hide** 这两个指令是通过改变CSS的`...

    Angular.JS中指令ng-if的注意事项小结

    ng-if同ng-show和ng-hide指令最本质的区别是,它不是通过CSS显示或隐藏DOM节点,而是真正生成或移除节点。 当一个元素被ng-if从DOM中移除,同它关联的作用域也会被销毁。而且当它重新加入DOM中时,会通过原型继承从...

    AngularJS基础 ng-hide 指令用法及示例代码

    如果需要更丰富的动画效果,可以考虑使用ng-show指令的补充指令,如ng-if或者ng-switch,或者结合CSS3动画。 对于ng-hide指令,理解其背后的原理和使用场景非常重要,这样开发者才能够充分地利用它来简化代码,提高...

    AngularJS基础 ng-show 指令简单示例

    此外,`ng-if`指令更进一步,它不仅控制元素的可见性,还会根据表达式的值决定是否在DOM中插入或移除元素,因此`ng-if`可能导致页面重新渲染,性能上相比`ng-show`和`ng-hide`略低。 总的来说,`ng-show`指令是...

    AngularJS使用ng-repeat指令实现下拉框

    - 使用 `ng-if` 或 `ng-show/hide`:避免在不必要时渲染元素,减少DOM的复杂性。 - 使用 `$watchCollection` 而不是 `$watch`:监控整个数组的变化,性能更好。 - 避免在 `ng-repeat` 中使用复杂的表达式:这可能...

    AngularJS基础 ng-switch 指令简单示例

    在处理多个条件分支时,相比于使用多个`ng-if`或`ng-show/hide`,`ng-switch`通常更为高效和简洁。 总之,`ng-switch` 是AngularJS中用于条件渲染的一个重要指令,它允许根据模型变量的值动态控制HTML片段的显示。...

    angularjs常见面试题.docx

    - `ng-if`根据表达式创建或销毁DOM,而`ng-show`/`ng-hide`仅改变元素的CSS属性(如`display`)控制显示隐藏。 - `ng-if`会产生新的作用域,`ng-show`/`ng-hide`则不会。 - 当使用`ng-model`进行数据绑定时,`ng-...

    Angular用来控制元素的展示与否的原生指令介绍

    在Angular的原生指令中有这几个指令用来控制元素的展示与否,ng-show/ng-hide/ng-if和ng-switch。 在angular性能优化中,我们也常常会用到它。 我们看下他们的区别。 其中ng-show和ng-hide是一样的,只不过ng-show是...

    学习AngularJS-1.x.pdf

    * ng-show 指令:根据条件显示或隐藏元素 * ng-hide 指令:根据条件隐藏元素 六、AngularJS重复语句 * ng-repeat 指令:重复显示元素 七、AngularJS过滤器 * filter 指令:过滤数据 * 自定义过滤器:如何创建...

    关于 angularJS的一些用法

    6. ng-show与ng-hide:这两个指令用于控制元素的显示和隐藏。ng-show指令根据表达式的布尔值来显示或隐藏DOM元素,ng-hide则相反。 7. ng-if:这个指令用于条件性地渲染HTML片段。当表达式的值为false时,它会从DOM...

    ngmasters:ng-masters课程的辅助存储库

    json 职能异步编程关闭原型这02-jQuery 处理DOM 实施待办事项清单与AngularJS相同的TODO列表第二课03-角形:豆饭你好,世界捆绑{[{Client}]} x {{server}} ng模型ng-class,ng-show,ng-hide,ng-if 控制器ng-点击...

    AngularJS中实现动画效果的方法

    在AngularJS中,可以通过ng-hide指令来控制元素的显示与隐藏。当ng-hide的值为true时,元素会被隐藏;反之,则会显示。同时,ngAnimate会监测到这些显示和隐藏的事件,并使用预定义的CSS类名来触发动画效果。 在...

    AngularJS 最常用的八种功能

    **区别**:`ng-if` 会在条件为假时移除DOM元素,而 `ng-show/ng-hide` 仅改变元素的CSS属性。 #### 五、校验语法之 ng-trim/ng-minlength/ng-maxlength/required/ng-pattern 标签 **功能概述**:这些指令用于实现...

    AngularJS 指令详细介绍.docx

    以上仅是AngularJS指令的冰山一角,实际中还有许多其他指令,如`ng-if`、`ng-show`、`ng-hide`、`ng-class`等,它们都提供了丰富的功能,帮助开发者构建复杂的应用。同时,指令也可以与控制器、服务、过滤器等其他...

    AngularJS参考手册

    - **ng-hide**:根据表达式的值来控制元素的可见性。 - **ng-href**:为`<a>`元素指定链接地址。 - **ng-if**:条件性地移除或添加元素。 - **ng-include**:在应用中包含外部HTML文件。 - **ng-init**:定义了初始...

    angularjs操作文档

    `ng-show`和`ng-hide`指令用于切换元素的可见性,不会从DOM中移除或添加元素。 **示例代码片段:** ```html <p ng-show="myVar">Visible when myVar is true. ``` #### 九、远程数据服务 AngularJS内置的服务`$...

Global site tag (gtag.js) - Google Analytics