我有一个角度应用程序,它具有以下切换表:
<tr ng-repeat="child in requirements">
<td class="vcenter">
<input type="checkbox" ng-checked="checkedfunction(child)" ng-click="toggleCheck(child)" ng-disabled="required == (planned + completed) && (selectedCourses.indexOf(child) == -1)" value=""/>
{{child.course.subject}}-{{child.course.course_no}}
</td>
<td class="vcenter">{{child.course.course_name}}</td>}
<td class="vcenter">3</td>
</tr>
控制器app.js具有以下功能:
$scope.toggleCheck = function (course) {
//checkedfunction(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();
};
$scope.checkedfunction = function(course){
//$scope.requirementcoursename = [];
//for(var i = 0; i < $scope.requirements.length; i++){
$scope.coursedetail = course;
$scope.requirementcoursename = ($scope.coursedetail.course.subject).concat("-",$scope.coursedetail.course.course_no);
for(var j = 0; j < $scope.mpttdetails.length; j++){
if($scope.requirementcoursename==$scope.mpttdetails[j].student_academic_credit.course_name){
return true;
}
}
for(var k = 0; k < $scope.planneddetails.length; k++){
if($scope.requirementcoursename==$scope.planneddetails[k].course_name){
return true;
}
}
//}
}
在这里,将检查切换,如果课程已经存在于任何数据数组中(如中所示)checkedfunction()
。
但是我想知道是否有一种方法可以禁用正在检查的课程mpttdetails
并保持planneddetails
启用状态?
我正在尝试检查和禁用切换(就像我在ng-checked中所做的一样),如果孩子存在于mpttdetails中(即在mpttdetails循环上执行检查时返回true)。如果没有,它将保持选中状态并启用
打破你mpttdetails
退房的checkFunction
,创建一个新的范围函数:
$scope.checkMpttdetails = function(course) {
...
}
这样,您仍然可以从 checkedFunction
$scope.checkedfunction = function(course){
...
if ($scope.checkMpttdetails) { return true }
...
}
在ng-disabled
表达中使用它时
ng-disabled="(required == (planned + completed) &&
(selectedCourses.indexOf(child) == -1)) || checkMpttdetails(child)"
我意识到还有一些其他细节需要重构(例如,如何使用顶部的传递参数checkedFunction
),但是这些细节留给了您。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句