AngularJS:当我转到其他页面时,Cookie消失

时间:2016-02-21 07:13:14

标签: javascript angularjs cookies

我使用AngularS创建了一个像购物车这样的功能,当我路由到Items页面并添加它完美运行的新项目时,我使用cookie暂时保留这些项目,但是如果我路由到另一个页面则使用购物车中的项目这与我以前添加到购物车的那个不同,购物车cookie变量消失了,因为我将购物车cookie初始化为空数组(如果它不存在)我的购物车商品的数量变为零。以下是我使用的代码。

Cart.js:引导购物车应用程序

var app = angular.module('cartApp', ['Resly.CartRepositories', 'Resly.CartControllers']);

 app.run(function($rootScope, $cookieStore){
     $rootScope.cart =  $cookieStore.get('cart') || [];
 });

CartControllers.js:处理来自视图的用户操作/交互

var cartControllers = angular.module('Resly.CartControllers', ['ngCookies']);

cartControllers.controller('CartController', function($rootScope, $http ){
    this.addTable = function(tableID){
        var callbackHandler = RestaurantRepository.getTableByID(tableID);
        callbackHandler.then(function successFul(response){
            $rootScope.cart = response.data;
            $cookieStore.put('cart', $rootScope.cart);
            // console.log($cookieStore.get('cart'));

        }, function failure(){
            // console.log('error');
        });
    };
});

CartRepository.js:处理对后端的API调用

var RestaurantRepositories = angular.module('Resly.CartRepositories', []);
RestaurantRepositories.service('RestaurantRepository', function($http){
    var restaurant = this;
    restaurant.getTableByID = function(tableID){
        return $http.get('/tables/'+tableID+'/get.json');
    };
    return restaurant;
});

在视图上我有一个按钮

<body ng-app='cartApp'>
    <div ng-controller='CartController as cartCtrl'>
       <button ng-click='cartCtrl.addTable(13)'>Add to Cart</button>
    </div>
</body>

我需要帮助确定数据为何不断消失。

1 个答案:

答案 0 :(得分:0)

您必须在控制器和服务中添加变量$ cookieStore,如下所示:

cartControllers.controller(&#39; CartController&#39;,function($ rootScope,$ http,RestaurantRepository,$ cookieStore){ ... });

根据您的示例,您没有将变量添加到Cookie中,然后当您更改视图时,继续从Cookie中获取空购物车。