2016-04-28 59 views
-1

这里是我的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 = {}用于为每个新购买的数据创建一个空值。如果我删除了$ scope.getpurchaselist.products = {},它的工作正常,但没有错误,但问题是列表没有变为空。 SO最后我有两种方法 1.或者通过编写$ scope.getpurchaselist.products = {}来使其成为null,但errorlist作为productlist.products.push不是函数让我知道要克服该错误 2.或者删除该行,并让我知道,如何使其为空

+0

您可以在推送前添加console.log(productlist.products)吗? – alpert

+0

是的。我在添加之前将它写入控制器。我看到不同的是,$ hashkey是第一次生成,但从第二次生成它。 @alpert – ANK

+0

我遇到了一个提示是,使用轨道和stringify选项,但它不工作,任何其他解决方案,或者我尝试更改代码 – ANK

回答

2

我认为,$ scope.getpurchaseList.products = {}会影响到你。因为它只要控制器加载就传递一个空对象而不是阵列。所以,请尝试删除它。

0

更改$ scope.products到只是产品。因为你将产品作为参数传递给savepurchase()函数。所以没有必要定义为scope.products你的控制器

+0

谢谢@Sachila Ranawaka。但我试过,虽然是给了我相同的错误 – ANK

+0

你可以提供一个提琴手或猛击 – 2016-04-28 05:23:28

+0

其有点长的代码,所以不可能与所有领域@sachila Ranawaka – ANK

1

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

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

+0

感谢U @Sachink。正如你所说,我通过消除这种情况来尝试功能,并且尽管它具有相同的错误也可以扩展。 – ANK

+0

我遇到了一个提示是,使用轨道和stringify选项,但它不工作,任何其他解决方案,或者我尝试更改代码 – ANK

相关问题