为了账号安全,请及时绑定邮箱和手机立即绑定

用angularJS做购物车清单点移除时总移除两条数据?

用angularJS做购物车清单点移除时总移除两条数据?

呼如林 2018-09-13 09:11:51
<tr ng-repeat="item in cart">  <td>{{item.id}}</td>   <td>{{item.name}}</td>   <td>{{item.quantity}}</td>   <td>{{item.price}}</td>   <td>{{item.quantity * item.price}}</td>   <td>       <button type="button" ng-click="remove(item.id)" class="btn btn-danger">移除</button>    </td>一下是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);         }     }); }
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

既然你决定通过 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 循环。这样就不会删除多个了


查看完整回答
反对 回复 2018-10-16
  • 1 回答
  • 0 关注
  • 602 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信