【问题标题】:AngularJS: Cookies disappear when I route to other pageAngularJS:当我路由到其他页面时 Cookie 消失
【发布时间】:2016-02-21 16:16:37
【问题描述】:

我使用 AngularS 创建了一个类似购物车的功能,当我路由到项目页面并添加新项目时,它运行良好,我使用 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>

请帮助我弄清楚为什么数据不断消失。

【问题讨论】:

    标签: javascript angularjs cookies


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2018-07-17
      相关资源
      最近更新 更多