angular js使用checked()而不是indexof()作为复选框

时间:2014-06-01 17:41:23

标签: javascript angularjs

我有这样的javascript来检查是否选中了复选框:

$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();
};

并在html中我有:

<input type="checkbox" ng-checked="checkedfunction(child)" ng-click="toggleCheck(child)" ng-disabled="required == (planned+completed) && (selectedCourses.indexOf(child) == -1) | filter: checkMpttdetails(child)" value=""/>

我想知道是否有checked()函数来检查复选框是否已选中而不是使用indexof()属性?

3 个答案:

答案 0 :(得分:1)

如果你正在使用jQuery(不是jqLit​​e - 尽管它可能有用),那么通过&#39;这个&#39;到您的点击处理程序:

ng-click="toggleCheck(this, child)"

并在您的点击处理程序中:

$scope.toggleCheck = function(element, course){
     if ($(element).is(':checked)) {
        ...
     }
}

答案 1 :(得分:0)

<input type="checkbox" ng-disabled="required == (planned+completed) && (selectedCourses.indexOf(child) == -1) | filter: checkMpttdetails(child)" ng-checked="isChecked" />

您可以通过切换$scope.isChecked来选中/取消选中该复选框 - 您也可以通过查看$scope.isChecked的值来检查是否已选中该复选框。

答案 2 :(得分:0)

使用$event对象可以访问在ng-click上操作的元素。在此对象中有一个名为target的属性(对于复选框输入)具有checked状态。

ng-click="toggleCheck($event)"

控制器功能:

$scope.toggleCheck = function($event){
    var thisCheckbox = $event.target;
    if (thisCheckbox.checked) {
        ...
    }
}

这是纯粹的Angular,不需要任何额外的库。