解决ng-repeat产生的ng-model中取不到值的问题


Posted in Javascript onOctober 02, 2018

最近遇到在ng-repeat产生的textarea中绑定ng-model后,在js中取不到ng-model值的问题。

html的代码结构如下

<div class="ques-item hide1 show9a" id="q10">
 <div class="ques-item-question">
  10.{{questions[9].questionContent}}
 </div>
 <div class="ques-item-option">
  <div ng-repeat="option in questions[9].options">
   <input type="{{questions[9].questionType}}" name="problem10" value="{{option.optionCode}}" id="{{option.id}}">
   <label for="{{option.id}}">{{option.optionContent}}</label>
   <textarea ng-if="$index == 4" class="ques-option-text" name="" id="" cols="30" rows="1" ng-model="text10"></textarea>
  </div>
 </div>
</div>

用ng-repeat循环输出了该题目的选项,有的选项后面有输入框,于是用ng-if控制某个选项后面添加textarea输入框。在用ng-model双向绑定了text10后,当输入框中输入内容时,js中的$scope.text10并不能取得内容。

经过查询发现原因是,ng-repeat会产生子作用域,而js中的scope是父作用域的,Angularjs中的作用域向上查找,所以是不能取得ng-repeat中的绑定值的。

解决方案就是把子scope中的值通过$parent属性传递给父scope,同时把text10定义为数组,即前端绑定时使用$parent.text10[$index],这样就绑定了每一个textarea输入框的值,从而能在js中获取到。

修改后如下:

<div class="ques-item hide1 show9a" id="q10">
 <div class="ques-item-question">
  10.{{questions[9].questionContent}}
 </div>
 <div class="ques-item-option">
  <div ng-repeat="option in questions[9].options">
   <input type="{{questions[9].questionType}}" name="problem10" value="{{option.optionCode}}" id="{{option.id}}">
   <label for="{{option.id}}">{{option.optionContent}}</label>
   <textarea ng-if="$index == 4" class="ques-option-text" name="" id="" cols="30" rows="1" ng-model="$parent.text10[4]"></textarea>
  </div>
 </div>
</div>

以上这篇解决ng-repeat产生的ng-model中取不到值的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自写的jQuery异步加载数据添加事件
May 15 Javascript
JavaScript函数的调用以及参数传递
Oct 21 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
JS与jQuery实现隔行变色的方法
Sep 09 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
Dec 08 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
Apr 24 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
Jul 13 Javascript
基于vue 开发中出现警告问题去除方法
Jan 25 Javascript
详解webpack+ES6+Sass搭建多页面应用
Nov 05 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
axios实现简单文件上传功能
Sep 25 Javascript
ng-repeat指令在迭代对象时的去重方法
Oct 02 #Javascript
浅谈开发eslint规则
Oct 01 #Javascript
Angular ElementRef简介及其使用
Oct 01 #Javascript
element上传组件循环引用及简单时间倒计时的实现
Oct 01 #Javascript
使用iView Upload 组件实现手动上传图片的示例代码
Oct 01 #Javascript
vue项目持久化存储数据的实现代码
Oct 01 #Javascript
详解mpvue scroll-view自动回弹bug解决方案
Oct 01 #Javascript
You might like
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
深入apache host的配置详解
2013/06/09 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
2011/09/28 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python分布式编程实现过程解析
2019/11/08 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
销售辞职报告范文
2014/01/12 职场文书
阿德的梦教学反思
2014/02/06 职场文书
追悼会主持词
2014/03/20 职场文书
幼师求职自荐信
2014/05/31 职场文书
商业项目策划方案
2014/06/05 职场文书
2015年妇女工作总结
2015/05/14 职场文书
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
Mysql如何查看是否使用到索引
2022/12/24 MySQL