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);
        }
    }]);
  • 相关阅读:
    SQL Reporting Services Report Viewer Scroll Bar(RDLC)
    SQL Server日期格式转换大全
    Export GridView to Excel within an UpdatePanel
    ASP.NET CompareValidator validate Currency
    微軟 Office 2003 版本比較一覽表
    打开Safari的Javascript调试功能
    SQL SERVER 2000/2005 列转行 行转列
    [Java] 使用cookie保持Session (Axis2 和 WSIT)
    .NET通用权限系统快速开发框架
    Java进阶对象与内存控制(一)
  • 原文地址:https://www.cnblogs.com/ToBeBest/p/6050201.html
Copyright © 2011-2022 走看看