javascript - 用angularJS做购物车清单点移除时总移除两条数据?
PHP中文网
PHP中文网 2017-04-11 13:04:10
[JavaScript讨论组]

  {{item.id}}
  {{item.name}}
  {{item.quantity}}
  {{item.price}}
  {{item.quantity * item.price}}
  
      
   
                    

一下是JS部分:
$scope.remove = function (ids) {

    var index = -1;

    //console.log(ids);
    angular.forEach($scope.cart, function (item,key) {
        console.log(key);
        if(item.id===ids){
            index =key;
        }
        if(index!==-1){
            $scope.cart.splice(index,1);

        }

    });
}
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
巴扎黑

既然你决定通过 index 来删除数据,为何不传入 $index 作为参数呢?

// Controller:
$scope.remove = function (index) {
    $scope.card.splice(index, 1);
}

// HTML:
<button type="button" ng-click="remove($index)" class="btn btn-danger">移除</button>

至于为什么会出现多次删除的情况,我是这么分析的:既然多次删除,一定是因为多次执行了 splice。而执行 splice 只有一个原因,就是 index !== -1

所以,对于你当前的代码, splice 之后,至少需要把 index 设回 -1。或者跳出 forEach 循环。这样就不会删除多个了

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

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