解决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 相关文章推荐
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
javascript parseInt与Number函数的区别
Jan 21 Javascript
基于node.js的快速开发透明代理
Dec 25 Javascript
js操作textarea 常用方法总结
Dec 03 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
js中删除数组中的某一元素实例(无下标时)
Feb 28 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
js实现input密码框显示/隐藏功能
Sep 10 Javascript
JS+CSS3实现的简易钟表效果示例
Apr 13 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 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
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
微信小程序progress组件使用详解
2018/01/31 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
js代码实现轮播图
2020/05/04 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
创建Django项目图文实例详解
2019/06/06 Python
python argparser的具体使用
2019/11/10 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
安全生产一岗双责责任书
2014/07/28 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
董事会决议范本
2015/07/01 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
python自动化测试之Selenium详解
2022/03/13 Python
Python学习之异常中的finally使用详解
2022/03/16 Python