2016-04-28 61 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

相關問題