TypeError:push不是函数

时间:2016-04-28 04:41:22

标签: angularjs

这是我的factories.html代码

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

    var productlist={products:[]};

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

    }

    }
})  

对于Services.html

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

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

对于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);
               }       
    }
    }

这里我在同一个控制器中有另一个功能,如

$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});
    } 

在我的HTML文件中,我有一个按钮,其功能为savepurchase(产品)。 第一次它的保存数据,但从第二次它显示我错误为TypeError:productlist.products.push不是一个函数。如果我刷新页面再次保存数据,但一直不能正常工作。让我知道代码出错的地方。 $ scope.getpurchaselist.products = {}用于为每次新购买生成数据null。如果我删除$ scope.getpurchaselist.products = {},它的工作正常没有错误,但问题是列表没有得到null。 所以最后我有两种方式 1.要么通过编写$ scope.getpurchaselist.products = {}使其为null,但错误为productlist.products.push不是函数让我知道克服该错误 2.或者删除该行并让我知道,如何使其为空

3 个答案:

答案 0 :(得分:2)

我认为,$ scope.getpurchaseList.products = {}正在影响你。因为它在控制器加载时传递空对象而不是数组。所以,试着删除它。

答案 1 :(得分:1)

条件if($scope.products._id==undefined)打破了你。请检查你写的逻辑。请注意$scope.productsproductssavepurchase函数中都是不同的变量。

首次延长$scope.products后,条件返回false

答案 2 :(得分:0)

$ scope.products 更改为产品。因为你将产品作为参数传递给savepurchase()函数。所以不需要在ur controller中定义为scope.products