我具有检查复选框的某些条件,并且我使用ng-checked条件运算符内部的函数逻辑。 对我来说很好。 问题是,提交模型值后,我没有得到ng检查的值。 如何也修改ng-checked值?希望我能得到答案。 这是我尝试过的:
<input type="checkbox" id="View" ng-model="module.View"
ng-checked="((findViewCheckBoxIsChecked(module)) || (module.ViewAll))"
ng-disabled="disableCheckBox(module)">
$scope.findViewCheckBoxIsChecked = function (module) {
if (module.View || module.ViewAll || module.Name == 'x' && module.Add
|| module.Name == 'x' && module.Edit
|| module.Name == 'x' && module.Delete
|| module.Name == 'x' && module.Add
|| module.Name == 'y' && module.Edit
|| module.Name == 'y' && module.Delete
|| module.Name == 'z' && module.Add
|| module.Name == 'z' && module.Edit
|| module.Name == 'z' && module.Delete) {
return true;
}
else {
return false;
}
}
答案 0 :(得分:1)
documentation for ng-checked明确指出不应与ng-model
一起使用。
从文档中:
ngChecked
如果
ngChecked
中的表达式为真,则在元素上设置选中的属性。注意,该指令不应与
ngModel
一起使用,因为这可能导致意外的行为。
哦...我不知道...然后如何设置我必须检查的复选框的值?有任何想法吗?
一个人可以使用ng-change
指令来计算同级复选框的值:
<input type="checkbox" id="ViewAll" ng-model="module.ViewAll"
ng-change="updateCheckboxes(module)" />
<input type="checkbox" id="View" ng-model="module.View"
̶n̶g̶-̶c̶h̶e̶c̶k̶e̶d̶=̶"̶(̶(̶f̶i̶n̶d̶V̶i̶e̶w̶C̶h̶e̶c̶k̶B̶o̶x̶I̶s̶C̶h̶e̶c̶k̶e̶d̶(̶m̶o̶d̶u̶l̶e̶)̶)̶ ̶|̶|̶ ̶(̶m̶o̶d̶u̶l̶e̶.̶V̶i̶e̶w̶A̶l̶l̶)̶)̶"̶
̶n̶g̶-̶d̶i̶s̶a̶b̶l̶e̶d̶=̶ ̶"̶d̶i̶s̶a̶b̶l̶e̶C̶h̶e̶c̶k̶B̶o̶x̶(̶m̶o̶d̶u̶l̶e̶)̶"̶
ng-disabled= "disableViewCheckBox"
ng-change="updateCheckboxes(module)" />
$scope.updateCheckboxes = function(module) {
module.View = (($scope.findViewCheckBoxIsChecked(module)) || (module.ViewAll));
$scope.disableViewCheckbox = $scope.disableCheckBox(module);
};
出于性能原因,应避免在AngularJS表达式中放入函数。框架在每个摘要周期调用一次或多次。通过使用ng-change
伪指令,仅当用户更改输入时才调用函数。
当然,ng-change
函数仅用于用户输入。控制器在分配新的模型值时还应该调用$scope.updateCheckboxes
函数。