javascript - angluar批量删除异常
高洛峰
高洛峰 2017-04-11 12:35:01
[JavaScript讨论组]
            scope.Del = function (id,index,is) {
                if (is) {
                    for (var i in scope.returnlist) {
                        if (scope.returnlist[i].active) {
                            for (var j in scope.list) {
                                if (scope.list[j].id == scope.returnlist[i].id) {
                                    scope.list[j].status = false;
                                    scope.list[j].select = true;
                                }
                            }
                            scope.returnlist.splice(i,1);
                        }
                    }

                } else {
                    scope.returnlist.splice(index, 1);
                    for(var i in scope.list){
                        if(scope.list[i].id==id){
                            scope.list[i].status=false;
                            scope.list[i].select=true;
                        }
                    }
                }
            }

以上是angular内删除数据的代码。
图解:


这是自己做的一个选择门店的组件。效果就是根据scope.list的列表中,选择需要的门店。有批量/删除,添加,已经单个添加与删除

scope.sattus
scope.select
分别的作用是禁用已经checkbox状态,达到不可重复选择的问题,
批量根据checkbox的勾选状态来达到批量添加,单点添加也可以卓个添加。

试验了一下并没什么异常。
如图:

单击删除后,需要将之前的数据的禁用以及状态删除。

单个删除是根据$index来删除的,然后根据for来寻找scope.list中对应的原始数据将
scope.sattus
scope.select
清除状态。

批量删除是根据双层for,来找对应的数据来执行。

但是问题就来了。

照道理来说应该是能全部删除的,但是为什么会出现只删除了一部分呢?

是双层for速度比较慢还是什么原因呢?

还有一个问题。关于这种需要这个list来找另外一个list的数据并且还是批量的。我的这种思路是否正确呢?有没比较好的方法或者思路呢?个人感觉应该还有另外一种方法更快。有大神有部分经验能否指导。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
大家讲道理
var cnt = 0;
var tmpArray = angular.copy(scope.returnlist);
for (var i in tmpArray) {
    if (tmpArray[i].active) {
        for (var j in scope.list) {
            if (scope.list[j].id == tmpArray[i].id) {
                scope.list[j].status = false;
                scope.list[j].select = true;
            }
        }
        scope.returnlist.splice(i - cnt, 1);
        cnt += 1;
    }
}

scope.returnlist.splice(i,1); 在循环内部将array的元素删除,这种会有问题,先将array拷贝一份。这样在看看吧。

高洛峰

我看了一下,觉得你应该是index不对。你批量删除的是你已经添加进returnlist对应的index,而不是某一个门店在整个列表中对应的位置。很有可能把未添加的门店也删除掉!你可以试着改动一下!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号