我在这个plunker中有一个 Angular 应用程序.
当我们单击该按钮时,它会打开一个包含项目列表的模式对话框。其中 2 项是根据复选框表输入中的条件进行预先检查的。
这是推送和拼接的函数:
$scope.toggleCheck = function (course) {
//debugger
var x = $scope.checkplanneddetails(course);
if ($scope.selectedCourses.indexOf(course) === -1){
$scope.selectedCourses.push(course);
$scope.planned += 3;
} else {
$scope.selectedCourses.splice($scope.selectedCourses.indexOf(course), 1);
$scope.planned -= 3;
}
$scope.getPercentage();
};
当从此列表中选择(选中)类(class)时,它会将 3 添加到 $scope.planned
中,并相应地增加进度条。同样,当取消选中复选框时,它也会以相同的方式减少。
但是对于加载模式对话框时已检查的项目,此功能会发生相反的情况。代码哪里出错了?
最佳答案
问题是您试图在 attitional 数组中保存复选框的状态。相反,您应该只使用“ng-”指令(例如 ng-model 或 ng-checked 用于复选框)
http://plnkr.co/edit/Nm9N2zdBZL7IubMCatjz?p=preview
这是我的修改:
$scope.toggleCheck = function (course) {
//debugger
if(course.checked){
$scope.planned += 3;
} else {
$scope.planned -= 3;
}
$scope.getPercentage();
};
而且我还将“ng-clicked”更改为“ng-changed”,因为第一个是在实际值更改之前触发的
关于javascript - Angularjs 模式的复选框表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000362/