我有一個選定的數組,它將保存所有選定的項目。所以當你改變一個複選框時,該項目會被添加或從該數組中刪除。問題是,如果其他事情改變了選中的數組,複選框不會更新。根據數組選擇/取消選中複選框
將自己選擇的狀態存儲在它自己不是一個選項,因爲在我的應用程序項目數組得到重新填充取決於url。所以選中的數組是一個全局數組,它包含了所有你選擇的項目。爲了給它一些上下文,我的應用程序是一個文件瀏覽器,你可以選擇不同目錄中的文件。
Plunker
http://plnkr.co/edit/h9t3caBzk7hyTYJysCay?p=preview
JS
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.selected = ['one'];
$scope.items = ['one', 'two', 'three'];
$scope.select = function (item, s) {
if (s) {
return $scope.selected.push(item);
}
$scope.selected.splice($scope.selected.indexOf(item.path), 1);
}
});
app.controller('ItemCtrl', function ($scope) {
$scope.s = $scope.selected.some(function (i){
return i === $scope.item;
})
})
的Html
<body ng-controller="MainCtrl">
<button ng-click='selected.length = 0'>Clear selected</button>
<p ng-repeat='item in items' ng-controller='ItemCtrl'>
<input type='checkbox' ng-change='select(item, s)' ng-model='s' /> {{item}}
</p>
{{selected}}
</body>