视图不用2模块angularjs更新

时间:2017-04-21 13:49:37

标签: angularjs cookies

我有三个模块app.root,app.shell,app.shop。就像那样

.module('app.root',['app.shell,'app.shop'])

在app.shop中,我在cookies中添加项目

vm.add = function(tensp,gia,img){
                     var item = {
                    tensp : tensp,
                    gia   : gia,
                    img   : img
                  };

   var cart = $cookies.getObject('cart');

      if (cart) {
        var items = JSON.parse(cart);
             items.push(item);

        $cookies.putObject('cart', JSON.stringify(items));
      } else {
        $cookies.putObject('cart', JSON.stringify([item]));
      }

在app.shell中,我以html

显示它
      vm.cookies = JSON.parse($cookies.getObject('cart'));
 {{vm.cookies.length}}

此问题是视图未更新。它只在刷新页面时更新。我哪里错了。请帮帮我

1 个答案:

答案 0 :(得分:1)

你没有发布整个代码,但试图猜测问题我认为你应该观察任何更改的cookie数组,获取新值然后更新视图。

$scope.$watch(function() { 
 return $cookies.cart; //watch the cart array
}, function(newValue) {
  vm.cookies = JSON.parse(newValue);
}, true);

在您的代码中,您只需提取一次数据,请记住购物车数组是原始数据的副本,而不是参考。

vm.cookies = JSON.parse($cookies.getObject('cart')); //this is a copy of the array
{{vm.cookies.length}} //view