Eu tenho um bloco de caixas de seleção em um ng-repeat, no entanto, em vez do ser um objeto de escopo direta ng-repeat, ele está em uma função que achata uma matriz multi-nível que está no escopo chamado $ scope.customReportsCtrl.districts.
HTML
<li class=option ng-repeat=district in customReportsCtrl.subDistricts() | orderBy: customReportsCtrl.districtOrder | limitTo: 4>
<input type=checkbox name=district id=d{{district.IDSubDistrictLogical}}cbx class=custom
ng-model=district.selected ng-change=customReportsCtrl.districtSelectionChanged(district)
ng-disabled=!customReportsCtrl.shouldDisplayDistrict() || (customReportsCtrl.selectedDistrictsChecked == customReportsCtrl.selectedDistrictsLimit && !district.selected)><!--
--><label for=d{{district.IDSubDistrictLogical}}cbx><span></span>{{district.SubDistrictName}}</label>
</li>
função de controlador angular:
$scope.customReportsCtrl.subDistricts = function(){
var subDistricts = new Array();
angular.forEach($scope.customReportsCtrl.districts, function(districtDetail, districtKey) {
angular.forEach(districtDetail.subDistricts, function(subDistrictDetail, subDistrictKey) {
subDistricts.push(subDistrictDetail);
});
});
return subDistricts;
}
Visualização e interação está funcionando bem. Mas agora eu estou tentando fazer uma função que deslects todos os itens. Eu estou tentando fazer isso por meio da atualização do modelo $ scope.customReportsCtrl.districts. Mas não tem impacto sobre o HTML.
function resetDistrictSelections() {
angular.forEach($scope.customReportsCtrl.districts, function(districtDetail, districtKey) {
districtDetail.checked = false;
angular.forEach(districtDetail.subDistricts, function(subDistrictDetail, subDistrictKey) {
subDistrictDetail.checked = false;
});
});
}
A coisa toda parece um confuso pouco. Estou certo em assumir que, porque o ng-repeat está usando uma função, ele não tem a preensão de estado do objeto retornado?