AngularJS解决ng-if中的ng-model值无效的问题


Posted in Javascript onJune 21, 2017

与其他指令一样,ng-if指令也会创建一个子级作用域,因此,如果在ng-if指令中添加了元素,并向元素属性增加 ng-model指令,那么ng-model指令对应的作用域属性子级作用域,而并非控制器注入的$scope作用域对象,这点在进行双向数据绑定时,需要引起注意。

<!DOCTYPE html>  
<html ng-app="myApp">  
<head>  
<meta charset="UTF-8">  
<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>  
<style> 
 .frame{ 
  padding: 5px 8px; 
  margin: 0px; 
  font-size: 12px; 
  width: 320px; 
  background-color: #eee; 
 } 
 .frame div{ 
  margin: 5px 0px; 
 } 
</style>  
</head>  
<body>  
 <div ng-controller="myCtrl" class="frame"> 
  <div> 
   a 的值: {{a}} <br> 
   b 的值: {{b}} 
  </div> 
  <div> 
   普通方式: <input type="checkbox" ng-model="a"> 
  </div> 
  <div ng-if="!a"> 
   ngIf方式:<input type="checkbox" ng-model="$parent.b"> 
  </div> 
 </div> 
 
 <script> 
  angular.module('myApp', []) 
   .controller('myCtrl', function($scope){ 
    $scope.a = false; 
    $scope.b = false; 
   }) 
 </script> 
</body>  
</html>

在ng-if方式中,每个包含的元素都拥有自己的作用域,因此,复选框元素也拥有自己的$scope作用域。相对于控制器作用域来说,这个作用域属于一个子级作用域,所以,如果它想绑定控制器中的变量值,必须添加$parent标识,只有这样才能访问到控制器中的变量。

因此,解决ng-if中ng-model值无效的问题,主要方法就是在绑定值时添加$parent标识,或者用ng-show指令代替ng-if指令,这两种方法都可以达到同样的页面效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在JS中如何调用JSP中的变量
Jan 22 Javascript
使用javascript获取页面名称
Dec 23 Javascript
JavaScript错误处理
Feb 03 Javascript
JS实现随机乱撞彩色圆球特效的方法
May 05 Javascript
ES6记录异步函数的执行时间详解
Aug 31 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
Node.js 8 中的重要新特性
Jun 28 Javascript
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
深入理解ES6中let和闭包
Feb 22 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
May 05 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 #Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 #Javascript
微信小程序中页面FOR循环和嵌套循环
Jun 21 #Javascript
微信小程序图片自适应支持多图实例详解
Jun 21 #Javascript
javascript+html5+css3自定义提示窗口
Jun 21 #Javascript
详解webpack分离css单独打包
Jun 21 #Javascript
AngularJS动态绑定ng-options的ng-model实例代码
Jun 21 #Javascript
You might like
PHP5 安装方法
2006/10/09 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php base64 编码与解码实例代码
2017/03/21 PHP
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python文件操作基础流程解析
2020/03/19 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
python如何实现word批量转HTML
2020/09/30 Python
有针对性的求职自荐信
2013/11/14 职场文书
医院护士的求职信
2014/01/03 职场文书
学历公证书范本
2014/04/09 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
保护环境的宣传语
2015/07/13 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android