我在ng-repeat
上有一个复选框,但是不是ng-repeat
是直接作用域对象,而是在一个函数上将范围为{ {1}}。
HTML
$scope.customReportsCtrl.districts
Angular Controller功能:
<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>
显示和交互工作正常。但是现在,我正在尝试创建一个可分离所有项目的函数。我正在尝试通过更新$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;
}
模型来做到这一点。但这对HTML没有影响。
$scope.customReportsCtrl.districts
整个事情看起来有点混乱。我是否可以假设因为function resetDistrictSelections() {
angular.forEach($scope.customReportsCtrl.districts,
function(districtDetail, districtKey) {
districtDetail.checked = false;
angular.forEach(districtDetail.subDistricts,
function(subDistrictDetail, subDistrictKey) {
subDistrictDetail.checked = false;
});
});
}
使用的是函数,所以它不保留返回对象的状态?
答案 0 :(得分:0)
由于HTML使用ng-model="district.selected"
,因此请按以下方式更改功能:
function resetDistrictSelections() {
angular.forEach($scope.customReportsCtrl.districts,
function(districtDetail, districtKey) {
districtDetail.checked = false;
angular.forEach(districtDetail.subDistricts,
function(subDistrictDetail, subDistrictKey) {
̶s̶u̶b̶D̶i̶s̶t̶r̶i̶c̶t̶D̶e̶t̶a̶i̶l̶.̶c̶h̶e̶c̶k̶e̶d̶ ̶=̶ ̶f̶a̶l̶s̶e̶;̶
subDistrictDetail.selected = false;
});
});
}
这将取消选中所有复选框。