ANK
ANK

Reputation: 293

TypeError: push is not a function

Here is my code for factories.html

    af.factory("PurchaseFactory",function(){

    var productlist={products:[]};

    return{
        getpurchaseCart:function(){
            return productlist;
        },
        addPurchaseCart:function(products){
        productlist.products.push(products);

    }

    }
})  

For Services.html

 as.service("PurchaseService",function(PurchaseFactory){

    this.getAllPurchase=function(){
        return PurchaseFactory.getpurchaseCart();
    }
    this.addPurchase=function(products)
    {
        PurchaseFactory.addPurchaseCart(products);
    }
}) 

For Controller.html

  ac.controller("PurchaseController",function($scope,PurchaseService){  
     $scope.savepurchase=function(products){
             if($scope.products._id==undefined){            
            $scope.products=angular.extend($scope.products,$scope.sizes)
             PurchaseService.addPurchase($scope.products);
               }       
    }
    }

Here i have an another function in the same controller, as

$scope.saveorder=function(cartorder){       
    $scope.Mainpurchaselist=angular.extend($scope.cartorder,$scope.getpurchaseList)
         CartService.addPurchaseCart($scope.Mainpurchaselist);
        $scope.getpurchaseList.products={}
         $scope.cartorder={}                                         
         $scope.products={}                                         
      $rootScope.isLogin=false;
     CartService.deletecartyPurchase(idx);
    Notification.success({message: 'your Cart Saving Successfully', delay: 1000});
    } 

In my HTML file, i have a button with function as savepurchase(products). For first time its saving data but from second time its showing me error as TypeError:productlist.products.push is not a function. If I refresh the page its again saving the data, but continuously its not working.Let me know where the code goes wrong. Here $scope.getpurchaselist.products={} is used to make a data null for every new purchase. If I remove the $scope.getpurchaselist.products={}, its working fine with no error but the problem is that the list is not getting null. SO finally i have two ways 1. either to make it null by writing $scope.getpurchaselist.products={} but error as productlist.products.push is not a function let me know to overcome that error 2. Or to remove that line and let me know, how to make it null

Upvotes: 0

Views: 3187

Answers (3)

Nitin Agarwal
Nitin Agarwal

Reputation: 941

I think, $scope.getpurchaseList.products={} is effecting you. As it passing an empty object instead of array as soon as the controller load. So, try removing it.

Upvotes: 2

Sachink
Sachink

Reputation: 1530

The condition if($scope.products._id==undefined) is breaking you. please check the logic you wrote. keep in mind $scope.products and products both are different variable in savepurchase function.

After extending $scope.products first time, condition return false.

Upvotes: 1

user5019310
user5019310

Reputation:

change the $scope.products into just products. because u pass the products as paramater to the savepurchase() function. so no need to define as scope.products in ur controller

Upvotes: 0

Related Questions