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 相关文章推荐
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
Ext grid 添加右击菜单
Nov 26 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
js接收并转化Java中的数组对象的方法
Aug 11 Javascript
JS请求servlet功能示例
Jun 01 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 Javascript
使用Vue 实现滑动验证码功能
Jun 27 Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 Javascript
vue打开子组件弹窗都刷新功能的实现
Sep 21 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
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
初识Laravel
2014/10/30 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
javascript 自动填写表单的实现方法
2010/04/09 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
再探JavaScript作用域
2014/09/24 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
jquery实现购物车基本功能
2019/10/25 jQuery
JS实现放烟花效果
2020/03/10 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
医学专业五年以上个人求职信
2013/12/03 职场文书
志愿者服务感言
2014/02/27 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
小学生节水倡议书
2015/04/29 职场文书
导游词之安徽九华山
2019/09/18 职场文书
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers