0
我正在使用AngularJs ui bootstrap模式。我有一個複選框的頁面。當複選框用戶檢查並點擊一個按鈕,它把選中的複選框的模式:Angularjs UI Bootstrap模式 - 複選框選中狀態不更新
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
checkedSearches: function() {
var checkedSearches = [];
angular.forEach($scope.searches, function(search)
{
if(search.checked) {
checkedSearches.push(search);
}
});
return checkedSearches;
}
}
});
在我的模式,我們又重新顯示數據爲複選框。用戶可以選擇/取消選擇複選框並點擊保存,它將保存所有選中的複選框。
var ModalInstanceCtrl = function ($scope, $modalInstance, checkedSearches) {
$scope.checkedSearches = checkedSearches;
var saveSearches = [];
angular.forEach($scope.checkSearches, function(search)
{
if(search.checked) {
saveSearches.push(search);
}
});
}
問題是,它是保存所有的複選框。似乎選中的屬性保留在複選框中,即使用戶取消選中模式。我沒有包含保存搜索的代碼。我基本上推到searchSearches陣列,它似乎推動所有複選框,包括未選中的複選框。
下面是複選框我的看法/莫代爾:
<tr ng-repeat="search in checkedSearches">
<td><input type="checkbox" ng-checked="search.checked" name="search" ng-model="search.checked" /></td><td>{{search.id}}</td><td>{{search.name}}</td>
</tr>
使用ng-model(和ng-change如果您需要處理事件)可以解決此問題: http://stackoverflow.com/a/16601110 – user2173353