1. 程式人生 > >angularJs 實現checkbox全選和多選

angularJs 實現checkbox全選和多選

var myApp = angular.module('myApp', []);


MyCtrl = function ($scope) {
    $scope.entities = [{
        "title": "foo",
        "id": 1
    }, {
        "title": "bar",
        "id": 2
    }, {
        "title": "baz",
        "id": 3
    }];
    $scope.selected = [];
    var updateSelected = function (action, id) {
        if (action == 'add' & $scope.selected.indexOf(id) == -1) $scope.selected.push(id);
        if (action == 'remove' && $scope.selected.indexOf(id) != -1) $scope.selected.splice($scope.selected.indexOf(id), 1);
    }


    $scope.updateSelection = function ($event, id) {
        var checkbox = $event.target;
        var action = (checkbox.checked ? 'add' : 'remove');
        updateSelected(action, id);
    };


    $scope.selectAll = function ($event) {
        var checkbox = $event.target;
        var action = (checkbox.checked ? 'add' : 'remove');
        for (var i = 0; i < $scope.entities.length; i++) {
            var entity = $scope.entities[i];
            updateSelected(action, entity.id);
        }
    };


    $scope.getSelectedClass = function (entity) {
        return $scope.isSelected(entity.id) ? 'selected' : '';
    };


    $scope.isSelected = function (id) {
        return $scope.selected.indexOf(id) >= 0;
    };


    //something extra I couldn't resist adding :)
    $scope.isSelectedAll = function () {
        return $scope.selected.length === $scope.entities.length;
    };
}