范围的变化不会影响html

时间:2017-06-22 07:42:35

标签: angularjs

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中仍会显示已删除的元素。

2 个答案:

答案 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);
    }
});