qq_28186593 2016-11-17 08:41 采纳率: 0%
浏览 864

angularJs全选复选BUG求助(先单选后全选反选后,再进行单选之前的值未清空)


<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>

    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>

</head>

<body ng-app="app">
    <div ng-controller="myCtrl" class="container bg-color">
        <section>
            全选: <input type="checkbox" ng-model="master" ng-click="all(master,user)">
            <div ng-repeat="z in user">
                <input id={{z.id}} type="checkbox" ng-model="x" ng-checked="master" ng-click="checkd(z,x)">{{z.name}}
            </div>
            <button href="#" class="btn btn-danger" ng-click="delete()">批量操作</button>
            <span>{{choseArr}}</span> 
        </section>
    </div>
    <script>
        var app = angular.module('app', []);

        app.controller('myCtrl', function($scope){
            $scope.user=$scope.user=[{
                "id": "1",
                "code": "1",
                "name": "黄"
              },
              {
                "id": "2",
                "code": "2",
                "name": "红"
              },
              {
                "id": "3",
                "code": "12",
                "name": "绿"
              }];

            $scope.choseArr = [];
            var str = ""; 
            var len = $scope.user.length;
            var flag = '';
            $scope.x = false;
            $scope.all = function (c, v) {
                if (c == true) {
                    $scope.x = true;
                    var rst = [];
                    angular.forEach(v, function(data,index,array){
                        rst.push(data.id);
                    });
                    $scope.choseArr = rst;
                    flag = 'a';
                } else {
                    $scope.x = false;
                    $scope.choseArr = [];
                    flag = 'b';
                }

            };
            $scope.checkd = function(z, x) {
                if(flag == 'a') {

                    str = $scope.choseArr.join(',') + ',';
                }
                if(x == true) {
                    str = str + z.id + ',';
                    flag = 'c'
                    if($scope.choseArr.length == len - 1) {
                        $scope.master = true
                    }
                } else {

                    str = str.replace(z.id + ',', '');
                }

                $scope.choseArr = (str.substr(0, str.length - 1)).split(',');
                var dex = $scope.choseArr.indexOf("");
                if(dex >= 0) {
                    $scope.choseArr.splice(dex, 1);
                };
                if($scope.choseArr.length == 0) {
                    $scope.master = false
                };

            };
            $scope.delete = function() {

                if($scope.choseArr[0] == "" || $scope.choseArr.length == 0) {
                    alert("请至少选中一条数据在操作!")
                    return;
                }
                else{
                        console.log($scope.choseArr)    
                }

            };

        });
    </script>

</body>



  • 写回答

1条回答 默认 最新

  • Go 旅城通票 2016-11-17 09:29
    关注

    你的str不是存着上一次的值,反选的时候清空str的值

    还有别人帮你解决的问题记得及时采纳。。http://ask.csdn.net/questions/345074

                $scope.all = function (c, v) {
                    if (c == true) {
                        $scope.x = true;
                        var rst = [];
                        angular.forEach(v, function (data, index, array) {
                            rst.push(data.id);
                        });
                        $scope.choseArr = rst;
                        flag = 'a';
                    } else {
                        $scope.x = false;
                        $scope.choseArr = [];
                        str = "";///////
                        flag = 'b';
                    }
    
                };
    
    评论

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的