解决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开发者都需要知道的5个小技巧
Jan 08 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
Feb 25 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
Jan 28 Javascript
JavaScript 实现鼠标拖动元素实例代码
Feb 24 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
javascript中数组array及string的方法总结
Nov 28 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
Aug 15 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
JS实现页面打印功能
Mar 16 Javascript
vue组件开发props验证的实现
Feb 12 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操作mysqli(示例代码)
2013/10/28 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
小程序实现留言板
2018/11/02 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
python如何实现视频转代码视频
2019/06/17 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python实现用户名密码校验
2020/03/18 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
经济管理专业自荐信
2013/12/30 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
终止劳动合同通知书
2015/04/16 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技