首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ng-if和ng-show / ng-hide有什么区别?

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

提问于 2017-12-25 09:38:47
回答 2关注 0查看 592

我试图理解ng-if和ng-show/ 之间的区别ng-hide,但是他们看起来一样。

有没有区别,我应该如何选择使用?

回答 2

秋之夕颜清

发布于 2017-12-25 10:14:40

该ng-if指令从页面中删除内容并ng-show/ng-hide使用CSS display属性来隐藏内容。

要使用此功能就能发挥效用:first-child和:last-child伪选择。

嗨喽你好

发布于 2017-12-25 10:12:50

gIf

该ngIf指令根据表达式删除或重新创建 DOM树的一部分。如果分配给表达式的表达式ngIf的值为false,那么元素将从DOM中移除,否则元素的克隆将重新插入到DOM中。

<!-- when $scope.myValue is truthy (element is restored) -->

<div ng-if="1"></div>

代码语言:txt
AI代码解释
复制
<!-- when $scope.myValue is falsy (element is removed) -->
代码语言:txt
AI代码解释
复制
<div ng-if="0"></div>

当一个元素被删除使用ngIf它的作用域被销毁,并且一个新的作用域被创建时元素被恢复。创建的ngIf范围使用原型继承从其父范围继承。

如果ngModel用于ngIf绑定到父范围中定义的JavaScript基元,则对子范围内的变量进行的任何修改都不会影响父范围中的值,例如

代码语言:txt
AI代码解释
复制
<input type="text" ng-model="data">
代码语言:txt
AI代码解释
复制
<div ng-if="true">
代码语言:txt
AI代码解释
复制
    <input type="text" ng-model="data">
代码语言:txt
AI代码解释
复制
</div>        

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

代码语言:txt
AI代码解释
复制
<input type="text" ng-model="data.input">
代码语言:txt
AI代码解释
复制
<div ng-if="true">
代码语言:txt
AI代码解释
复制
    <input type="text" ng-model="data.input">
代码语言:txt
AI代码解释
复制
</div>

或者,$parent引用父范围对象的变量:

代码语言:txt
AI代码解释
复制
<input type="text" ng-model="data">
代码语言:txt
AI代码解释
复制
<div ng-if="true">
代码语言:txt
AI代码解释
复制
    <input type="text" ng-model="$parent.data">
代码语言:txt
AI代码解释
复制
</div>

ngShow

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

代码语言:txt
AI代码解释
复制
<!-- when $scope.myValue is truthy (element is visible) -->
代码语言:txt
AI代码解释
复制
<div ng-show="1"></div>
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
<!-- when $scope.myValue is falsy (element is hidden) -->
代码语言:txt
AI代码解释
复制
<div ng-show="0" class="ng-hide"></div>

当ngShow表达式求值时false,ng-hideCSS类被添加到class元素的属性上,导致它被隐藏。何时true,将ng-hideCSS类从元素中移除,导致元素不显示为隐藏。

和开发者交流更多问题细节吧,去 写回答
相关文章
前端面试题及答案(二)
我们都知道ng-show/ng-hide实际上是通过display来进行隐藏和显示的。而ng-if实际上控制dom节点的增删除来实现的。因此如果我们是根据不同的条件来进行dom节点的加载的话,那么ng-if的性能好过ng-show.
用户7293182
2022/01/17
6820
angularJS学习之路(十一)---ng-show和ng-hide
ng-show 和 ng-hide 根据表达式的值来显示或者隐藏HTML元素 ng-show   false   被隐藏 ng-hide true 被隐藏 <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="utf-8"> <title></title> </head> <body> <div ng-show="2 + 2 === 5">2 + 2 isn't 5, don't show</div> <div n
wust小吴
2019/07/08
8100
AngularJS 动画
AngularJS 使用动画需要引入 angular-animate.min.js 库。
陈不成i
2021/07/26
2.2K0
AngularJS面试常见问题汇总
脏检查机制。 双向数据绑定是 AngularJS 的核心机制之一。当 view 中有任何数据变化时,会更新到 model ,当 model 中数据有变化时,view 也会同步更新,显然,这需要一个监控。 原理就是,Angular 在 scope 模型上设置了一个监听队列,用来监听数据变化并更新 view 。每次绑定一个东西到 view 上时 AngularJS 就会往 $watch 队列里插入一条 $watch ,用来检测它监视的 model 里是否有变化的东西。当浏览器接收到可以被 angular context 处理的事件时, $digest 循环就会触发,遍历所有的 $watch ,最后更新 dom。
生南星
2019/07/22
2.1K0
Angular学习资料大全和常用语法汇总(让后端程序员轻松上手)
  首先为什么要写这样的一篇文章呢?主要是因为前段时间写过一些关于Angualr的相关实战文章,有些爱学习的小伙伴对这方面比较感兴趣,但是又不知道该怎么入手(因为认识我的大多数小伙伴都是后端的同学),所以今天准备出一篇Angular学习资料汇总和日常开发中使用比较频繁的语法总结。让更多的后端程序员更好的了解学习Angualr,拓展自己的技术栈。
追逐时光者
2021/01/29
5.6K0
再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
ng-bind 单向数据绑定($scope -> view),用于数据显示,简写形式是 {{}}。
周陆军
2018/08/02
8.2K0
(4)Angular的开发
angular框架,库,是一款非常优秀的前端高级JS框架,有了这个框架就可以轻松构建SPA应用程序,通过指令宽展了HTML,通过表达式绑定数据到HTML。
达达前端
2019/07/22
3.3K0
第215天:Angular---指令
在 AngularJS 中将前缀为 ng- 这种属性称之为指令,其作用就是为 DOM 元素调用方法、定义行为绑定数据等
半指温柔乐
2018/09/11
3.4K0
Angularjs基础(八)
AngularJS Bootstrap     AngularJS 的首选样式表是 Twitter Bootstrap ,Twitter Bootstrap 是目前最受欢迎的前端框架 Bootstrap     你可以在你的 AngularJS 应用中加入 Twitter Bootstrap,你可以在你的 <head>元素中添加如下代码:     <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/boo
用户1197315
2018/01/19
3.1K0
AngularJS 事件
ng-hide 指令设置 <p>元素及两个输入域是否可见, 根据 myVar 的值 (true 或 false) 来设置是否可见。
陈不成i
2021/07/23
1.7K0
angularjs学习第七天笔记(系统指令学习)
  您好,接着在昨天对简单指令学习了解以后,今天开始学习了解angularjs中的系统指令
小小许
2018/08/30
3K0
angularjs学习第七天笔记(系统指令学习)
Angularjs基础(六)
AngularJS HTML DOM     AngularJS为HTML DOM 元素的属性提供了绑定应用数据的指令。 ng-disabled指令     ng-disabled指令直接绑定应用数据到HTML的disabled属性。       实例:       <div ng-app="" ng-init="mySwitch=true">         <p>           <button ng-disableled="mySwitch">点我!</button
用户1197315
2018/01/19
3.1K0
AngularJS系列(八)——事件
ng-click :点击 ng-click 指令定义了 AngularJS 点击事件。 <div ng-app="myApp"ng-controller="myCtrl"> <buttonng-click="count=count+1">点我!</button> <p>{{count}}</p> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function
逝兮诚
2019/10/30
5260
AngularJS HTML DOM
ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性。
陈不成i
2021/07/23
8420
Angularjs基础(十一)
ng-csp       描述:修改内容的安全策略       实例: 修改AngularJS 中关于"eval"的行为方式及内联样式;           <body ng-app="" ng-csp>       定义和用法           ng-csp 指令用于修改AngularJS 的安全策略。           如果使用了ng-csp指令,AngularJS 执行eval 函数,但允许注入内联样式。           设置ng-csp 指令为no-unsafe-eval
用户1197315
2018/01/22
2.4K0
angularjs学习第七天笔记(系统指令学习)
  您好,接着在昨天对简单指令学习了解以后,今天开始学习了解angularjs中的系统指令
小小许
2018/09/20
2.7K0
AngularJS系列(七)——HTML DOM操作
ng-disabled 指令绑定应用程序数据"mySwitch" 到 HTML 的 disabled 属性。
逝兮诚
2019/10/30
5550
Vue入门—常用指令详解
Vue是一个MVVM(Model / View / ViewModel)的前端框架,相对于Angular来说简单、易学上手快,近两年也也别流行,发展速度较快,已经超越Angular了。比较适用于移动端,轻量级的框架,文件小,运行速度快。最近,闲来无事,所以学习一下Vue这个流行的框架,以备后用。
全栈程序员站长
2022/07/11
1.1K0
[angularjs] angularjs系列笔记(七)HTML DOM
AngularJs为HTML DOM元素的属性提供了绑定数据的指令 ng-disabled指令 ng-disabled指令直接绑定数据到HTML元素的disabled属性 ng-show指令 ng-show指令隐藏和显示一个HTML元素 ng-hide指令与ng-show相反 <div ng-app="Home"> <div ng-controller="ngDisabledTest"> 测试ng-disabled指令 <button ng-disa
唯一Chat
2019/09/10
3660
蓝牙和WiFi有什么区别?
如果您拥有手机、笔记本电脑、计算机或任何其他现代电子设备,知道蓝牙和 WiFi 。
网络技术联盟站
2021/11/05
2.5K0
蓝牙和WiFi有什么区别?

相似问题

securecrt和winscp有什么区别?

41.7K

JDK和JRE有什么区别?

2460

addEventListener和onclick有什么区别?

2503

Linux和ubantu有什么区别?

43.1K

JavaScript和ECMAScript有什么区别?

2363
相关问答用户
擅长4个领域
萃橙科技 | 合伙人擅长4个领域
腾讯 | 技术专家擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档