2016-10-03 34 views
3

我想一個新值在Javascript添加到陣列用下面的代碼:的Array.push不是函數

$rootScope.shoppingCart = new Array(); 

$rootScope.addToShoppingCart = function(item){ 
    var quantity = 1; 
    var product = []; 

    for(var i=0; i< $rootScope.shoppingCart.length; i++){ 
     if($rootScope.shoppingCart[i].productNumber.indexOf(item.product.productNumber) > -1){ 
      quantity = $rootScope.shoppingCart[i].quantity+1; 
      $rootScope.shoppingCart[i].quantity = quantity; 
      break; 
     } 
    } 
    if(quantity == 1){ 
     product = { 
      name: item.product.brandName + " "+ item.product.productNumber, 
      price: item.price, 
      image: item.product.image1, 
      quantity: quantity, 
      productNumber: item.product.productNumber, 
      productId: item.product._id 
     }; 
     $rootScope.shoppingCart.push(product); 
    } 
} 

但是,當我想通過'addToShoppingCart了一種新產品添加到陣列'功能我得到一個$rootScope.shoppingCart.push is not a function錯誤。 我的眼睛我沒有任何問題,因爲我想將一個數組插入一個數組,但它會一直出現這個錯誤。

有沒有人看到我在這裏做錯了?

+2

代碼看起來很好,也許你重寫購物車中某處的代碼? –

+0

沒有什麼與你在這段代碼中出現的錯誤有關。這只是意味着'$ rootScope.shoppingCart'不是數組的實例,或者可能會在代碼的其他部分重新分配。 – Hydro

+0

如果(!angular.isArray($ rootScope.shoppingCart)) console.log($ rootScope.shoppingCart);您可能會在此函數調用之前將'$ rootScope.shoppingCart'作爲對象或其他數據類型 –

回答

3

您可以簡單地添加以下代碼爲「loadcart」功能

Array.prototype.push.apply($rootscope.shoppingCart, response.data)