2016-10-03 3 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

код кажется нормально, возможно переопределить ShoppingCart где-то в коде? –

+0

Ничего не связано с ошибкой, полученной в этом коде. Это просто означает, что '$ rootScope.shoppingCart' не является экземпляром массива или может быть переназначен в другой части вашего кода. – Hydro

+0

вы можете сделать '$ rootScope.shoppingCart' как объект или какой-либо другой тип данных перед вызовом этой функции –

ответ

3

Вы можете просто добавить следующий код в функции «» loadcart

Array.prototype.push.apply($rootscope.shoppingCart, response.data) 
Смежные вопросы