通常情況下,通過表單和輸入字段,表單控制器將在表單名稱屬性下發布到相關的範圍中。而且,NgModelController在輸入名稱屬性下發布。 所以對於與ngModel指令的輸入字段中,輸入字段NgModelController可以像$scope.myFormName.myInputFieldName
如何獲取ngRepeat指令中的輸入字段的NgModelController?
的問題是如何做同樣的事情來檢索(獲得NgModelController)爲ngRepeat指令裏面輸入字段?
我想命名輸入字段使用$索引作爲名稱的一部分,所以每個模板實例是唯一命名的。這使得好了,
<input name="foo_{{$index}}" ...
渲染實例與$索引== 3
<input name="foo_3" ...
但是,試圖通過公佈姓名,以獲得ngModelController不工作(這是不確定的),例如:
$scope.myFormName.foo_3
顯示這是這裏的plunker:http://plnkr.co/edit/jYDhZfgC3Ud0fXUuP7To?p=preview
這表明成功獲取ngModelController for'plain'input元素並調用$ setValidity,並且還顯示無法在ngRepeat指令中獲取輸入元素的ngModelController。
複製的代碼中的相關部分從以下plunker:
<div ng-repeat="element in elements">
<div ng-class="{error: form['foo_{{$index}}'].$invalid}">
<input name="foo_{{$index}}" ng-model="element.a" type="number">
<span ng-show="form['foo_{{$index}}'].$error.bar">ngRepeat bar invalid</span>
</div>
</div>
{{form.foo_0.$setValidity('bar', false)}}
我猜問題是,NG-重複創建一個新的範圍,你不能簡單地訪問孩子範圍:這裏類似這樣的回答:http://stackoverflow.com/questions/14491433/accessing-the-model -inside-a-ng-repeat對不起,我沒有一個好主意,除了現在編寫自定義指令外,如何更改它:/ – 2013-03-01 21:50:06