【发布时间】: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