我正在开发一个带有angularjs的电子商务网站asp.net mvc。我在我的一个页面中遇到了$ scope的问题。我在我的控制器中定义了一个$ scope.items数组,并尝试从cookie中获取此数组中的值。 这是代码
app.controller('checkoutController', ['$scope', 'productService', '$cookies', '$cookieStore', '$location', 'sharedService', '$rootScope', 'customerService', function ($scope, productService, $cookies, $cookieStore, $location, sharedService, $rootScope, customerService) {
$scope.items = [];
$scope.customer = {};
$scope.customer.FirstName = "";
$scope.customer.LastName = "";
$scope.customer.Email = "";
$scope.customer.Password = "";
$scope.customer.CPassword = "";
$scope.customer.Address1 = "";
$scope.customer.Address2 = "";
$scope.customer.ZipCode = "";
$scope.customer.Country = "";
$scope.customer.State = "";
$scope.customer.City = "";
$scope.customer.MobileNo = "";
$scope.logDetails = {};
$scope.logDetails.LogEmail = "";
$scope.logDetails.LogPassword = "";
$scope.customer.Roleid = 1;
$scope.items = $cookies.StyleStoreCart;
}
它给出了我没有定义$ scope.items的错误。但它已经定义了
专家请告诉我哪里出错了?
这是现场网站的网址。请尝试结帐并在结帐页面上查看控制台中的错误。
http://stylesstore.com/Home/Products
这是我在我的产品页面中的应用程序中向cookie插入数据的方式
var item = new cartItem(Picture1, ProductName, UnitPrice);
$scope.items.push(item);
$cookies.StyleStoreCart = $scope.items
$scope.Itemcount = $scope.Itemcount + 1
在我的结帐页面中,我收到了像这样的Cookie值
$scope.items = $cookies.StyleStoreCart;
答案 0 :(得分:1)
这是因为items
在您访问之前已分配给undefined
。
在第一行代码中,您将items
初始化为数组,但$cookieStore.get('StyleStoreCart')
为undefined
,然后$scope.items
在此分配后变为undefined
。
Home
页面成功存储了StyleStoreCart
个Cookie,但如果您使用开发者工具(在Chrome中,它的chrome:// settings / cookies)查看此Cookie项目,您会看到此Cookie的路径为/home
。然后,您导航到http://stylesstore.com/Cart/CheckOut
,其路径为/cart
,也许我们无法从Cookie中获取StyleStoreCart
。
正确的解决方案是,将Cookie存储如下
$cookies.put('StyleStoreCart', value, {path: "/"});