zoukankan      html  css  js  c++  java
  • angularJS全选功能实现

    最近在做的一个项目要增加全选和反选功能,之前只做过JQ版的全选和反选。

    实现效果

    1.点击全选checkbox可以切换全选和全部清空

    2.点击列表中的checkbox,当全部选中时全选选中

    3.在全选状态下点击列表中的checkbox将其置为非选中状态时全选checkbox也变为非选中状态

    一开始看到是angular项目上面加全选以后不造如何下手。

    步骤一:

    然后就上网找资料,发现一个很不错的demo,结果把它放到项目中时发现它实现不了需求2和3,当时以为是自己的写法有问题,又去玩了下那个demo,发现那个demo只能实现功能1。

    demo地址:demo案例

    教训以后遇到demo要先全部玩过以后再放到项目里面用。

    步骤二:

    然后后面又找到一个博客,这个是里面的方法可以完美实现我的需求。我采用的是方法3放到项目中进行的验证,在此把所用部分代码贴出来。到项目里面的时候根据项目实际情况替换参数即可。

    博客地址:成功案例博客

    成功案例:

    html

    <div ng-controller="myController">
        <label for="flag">全选
            <input id="flag" type="checkbox" ng-model="select_all" ng-change="selectAll()">
        </label>
        <ul>
            <li ng-repeat="i in list">
                <input type="checkbox" ng-model="i.checked" ng-change="selectOne()">
                <span>{{id}}</span>
            </li>
        </ul>
    </div>

    angular

    var app = angular.module('myApp',[]);
    app.controller('myController', ['$scope', function ($scope) {
        $scope.list = [
            {'id': 101},
            {'id': 102},
            {'id': 103},
            {'id': 104},
            {'id': 105},
            {'id': 106},
            {'id': 107}
        ];
        $scope.m = [];
        $scope.checked = [];
        $scope.selectAll = function () {
            if($scope.select_all) {
                $scope.checked = [];
                angular.forEach($scope.list, function (i) {
                    i.checked = true;
                    $scope.checked.push(i.id);
                })
            }else {
                angular.forEach($scope.list, function (i) {
                    i.checked = false;
                    $scope.checked = [];
                })
            }
            console.log($scope.checked);
        };
        $scope.selectOne = function () {
            angular.forEach($scope.list , function (i) {
                var index = $scope.checked.indexOf(i.id);
                if(i.checked && index === -1) {
                    $scope.checked.push(i.id);
                } else if (!i.checked && index !== -1){
                    $scope.checked.splice(index, 1);
                };
            })
    
            if ($scope.list.length === $scope.checked.length) {
                $scope.select_all = true;
            } else {
                $scope.select_all = false;
            }
            console.log($scope.checked);
        }
    }]);
  • 相关阅读:
    反射(五)之动态代理的作用
    反射(四)之反射在开发中的适用场景及利弊
    反射(三)之通过反射获取构造方法, 成员变量, 成员方法
    反射(二)之反射机制
    反射(一)之初探反射
    java多线程(五)之总结(转)
    java多线程(四)之同步机制
    java多线程(三)之售票案例
    java多线程(二)之实现Runnable接口
    java多线程(一)之继承Thread类
  • 原文地址:https://www.cnblogs.com/ToBeBest/p/6050201.html
Copyright © 2011-2022 走看看