您好,登錄后才能下訂單哦!
小編給大家分享一下在js中如何解決ng-repeat產生的ng-model中取不到值的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
最近遇到在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>
以上是“在js中如何解決ng-repeat產生的ng-model中取不到值的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。