我的問題是,我試圖從控制器內部訪問這些複選框,所以我可以從那裏設置它們爲true。數據綁定到ng模型裏面的複選框
出於某種原因,我無法弄清楚用於這些複選框的正確的ng模型,以便我有能力這樣做,同時保持每個模型都有唯一的名稱。
<accordion-group ng-repeat="group in groups">
<accordion-heading>{{group.title}}</accordion-heading>
<div ng-repeat="collection in group.collections">
<div class="checkbox collection-legend" style="background-color: {{collection.color}}">
<label><input type="checkbox" ng-click="toggleCollection(collection.key)" ng-model="checkboxes[collection.key]"> {{collection.name}}: <em>{{collection.description}}</em></label>
<div class="customFields">
<label ng-repeat="(key, val) in collection.queries" ng-if="key != 'default' && key != 'dateRangeKey'">
<input class="form-text" ng-model="customProperties[collection.name + '-' + key]" type="text"><em>{{key}}</em></label>
</div>
</div>
</div>
</accordion-group>
對於某些方面,我想建立一個「恢復會話」的方法,在這裏用戶可以把備份,而無需再次填寫出來提交的舊形式,所以我有複選框列表這需要「重新檢查」,我只是不知道如何命名我的模型,所以我可以做到這一點。
ng-model =「checkboxes [collection.key]」好像它應該在這裏工作。有什麼建議?
然後$ scope.checkboxes [key] = true在控制器中。 (關鍵匹配collection.key;我已經證實了這一點)。獲取「無法設置(鍵)未定義」的錯誤。
這裏是JS:
$scope.session.collections.forEach(function(c){
$scope.toggleCollection(c);
console.log(c + ' '+ typeof c);
$scope.checkboxes = {
c: true
};
});
解決方案:不要初始化$ scope.checkboxes爲空對象。現在工作。
加入我的JS。我的語法一定有什麼問題,因爲我收藏的東西與你在小提琴中的東西幾乎完全一樣,並且它很有用。 – KalterTod
你有forEach的任務,你確定你打算這麼做嗎?它會覆蓋每次複選框覆蓋,只留下一個項目c永遠。否則,我們可能還需要JS設置$ scope.collections – tom
是的,我確實這麼做了,但我注意到了一些...當我分配「c」時...它只是創建一個對象{c :true},而不是使用變量c。有沒有辦法強制它是從forEach傳遞的字符串,而不是一個全新的對象? – KalterTod