var product_id = $this.attr('data-id');
angular.forEach($rootScope.cartItems, function(value, key) {
if (value.iProductID == product_id && key > -1){
$rootScope.cartItems.splice(key, 1);
console.log($rootScope.cartItems);
}
在上面的代码中,我正在从数组中删除对象元素,但在使用splice
删除元素后,console.log()
显示正确的数据结果。但在我的HTML $rootScope.cartItems
中仍会显示已删除的元素。
答案 0 :(得分:1)
$rootScope.cartItems.splice(key, 1);
$scope.$apply(function() {
$rootScope.cartItems = $rootScope.cartItems;
});
我找到了答案。谢谢你们的答案。
答案 1 :(得分:0)
控制器中的某些代码块可能会重新填充购物车项目,因此无法看到更改。
您可以设置一个事件来收听购物车中的商品。
var product_id = $this.attr('data-id');
$rootScope.$broadcast('RemoveCartItem', product_id);
收听已更改的事件:
$rootScope.$on('RemoveCartItem', function (event, product_Id) {
angular.forEach($rootScope.cartItems, function(value, key) {
if (value.iProductID == product_Id && key > -1){
$rootScope.cartItems.splice(key, 1);
console.log($rootScope.cartItems);
}
});