我有一个角度应用程序,其中包含以下切换表:
<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)。如果没有,它将保持检查并启用
答案 0 :(得分:0)
打破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
顶部传递的参数),但这些都留给您。