由於ngRepeat創建每個項目的新(子)範圍,爲這些項目創建新的ng-models(與這些新範圍綁定)將不起作用,因爲這些模型/數據只能在這些內部範圍內訪問。我們不能編寫控制器函數來訪問這些內部/子範圍。最好在myAppObjects中爲模型引用某些內容(如@Max在第二個示例中所示)。
如果myAppObjects看起來是這樣的:
$scope.myAppObjects = [
{id: 1, cb1: true, cb2: false, cb3: true, cb4: true, cb5: false },
{id: 2, cb1: false, cb2: false, cb3: true, cb4: false, cb5: true },
你可以寫你的NG-重複這樣的:
<tr ng-repeat="appObj in myAppObjects">
<td>{{appObj.id}}
<input type="checkbox" ng-model="appObj.cb1"></td>
<td><input type="checkbox" ng-model="appObj.cb2"></td>
<td><input type="checkbox" ng-model="appObj.cb3"></td>
<td><input type="checkbox" ng-model="appObj.cb4"></td>
<td><input type="checkbox" ng-model="appObj.cb5"></td>
</tr>
工作小提琴:http://jsfiddle.net/mrajcok/AvGKj/
底線:我們需要有在父作用域中定義的複選框模型(在我的小提琴中,MyCtrl的$作用域中),而不在ngRepeat內部/子作用域中/中。
我不認爲你可以使用Angular表達式來命名一個字段元素。請參閱https://groups.google.com/d/topic/angular/v5lK1y8-HXQ/discussion –
使用角度表達式名稱正常工作。它只是將它們用於造成麻煩的ng-model屬性。我認爲馬克斯的回答低於正確的方向。我將不得不再做一些實驗。 – akronymn
以我的經驗,它不幸並不總是正常工作。在使用Angular表達式與角度表單驗證一起使用名稱時,這裏提供了一個小問題:http://jsfiddle.net/mrajcok/teZKX/檢查輸入元素,Angular表達式似乎被評估,但Angular驗證的東西似乎沒有認出它。由於這種情況不起作用,我個人不使用任何表單控件的字段名稱中的Angular表達式。因人而異。也許與複選框它工作正常。順便說一句,名稱屬性是可選的Angular複選框 - 你可能不需要它。 –