解决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 相关文章推荐
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
jQuery窗口、文档、网页各种高度的精确理解
Jul 02 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
jquery任意位置浮动固定层插件用法实例
May 29 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
jQuery插件datatables使用教程
Apr 21 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
View.post() 不靠谱的地方你知道多少
Aug 29 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
axios如何取消重复无用的请求详解
Dec 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框架Symfony2经典入门教程
2014/07/08 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
Vue自定义指令详解
2017/07/28 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python中的map、reduce和filter浅析
2014/04/26 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
python飞机大战游戏实例讲解
2020/12/04 Python
python 调用Google翻译接口的方法
2020/12/09 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
事务机电主管工作职责
2014/02/25 职场文书
业务员自荐信范文
2014/04/20 职场文书
护理专科学生自荐书
2014/07/05 职场文书
中学生打架检讨书
2014/10/13 职场文书
2014年维修工作总结
2014/11/22 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android