У меня есть блок флажков на ng-repeat
, однако вместо ng-repeat
, являющегося прямым объектом области, он находится на функции, которая выравнивает многоуровневый массив, который находится в области действия, называемой $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>
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;
}
Дисплей и взаимодействие работает нормально. Но сейчас я пытаюсь сделать функцию, которая отбирает все предметы. Я пытаюсь сделать это путем обновления модели $scope.customReportsCtrl.districts
. Но это не оказывает никакого влияния на HTML.
function resetDistrictSelections() {
angular.forEach($scope.customReportsCtrl.districts,
function(districtDetail, districtKey) {
districtDetail.checked = false;
angular.forEach(districtDetail.subDistricts,
function(subDistrictDetail, subDistrictKey) {
subDistrictDetail.checked = false;
});
});
}
Все это выглядит немного грязно. Прав ли я, если предположить, что, поскольку ng-repeat
использует функцию, он не имеет статуса возвращаемого объекта?