angularjs中$ scope变量的未分解错误

时间:2015-06-01 08:04:47

标签: asp.net-mvc angularjs e-commerce

我正在开发一个带有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;

1 个答案:

答案 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: "/"});