2016-04-28 12 views
-1

はここでここで私が持っているController.html例外TypeError:プッシュ

についてはServices.html

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

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

についてはfactories.html

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

    var productlist={products:[]}; 

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

    } 

    } 
}) 

のための私のコード

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としてerrorが2回目に表示されています:productlist.products.pushは関数ではありません。ページをリフレッシュしてデータを保存し直しても、データが保存されていない場合は、コードが間違っているかどうかを確認してください。 ここで$ scope.getpurchaselist.products = {}は、新規購入ごとにデータをnullにするために使用されます。 $ scope.getpurchaselist.products = {}を削除しても、問題なく正常に動作しますが、問題はリストがnullにならないことです。 だから私は2つの方法を持っています 1. $ scope.getpurchaselist.products = {}を書くことによってnullにするか、productlist.products.pushとしてエラーが発生しました。そのエラーを解決するために私に教えてください 2.またはその行を削除し、それがヌル

+0

プッシュ前にconsole.log(productlist.products)を追加できますか? – alpert

+0

はい。私は追加する前にコントローラに書きました。違いは$ hashkeyが初めて生成されていることですが、2回目からは生成されません。 @alpert – ANK

+0

私はヒントを見つけたが、トラックを使用してオプションを文字列にすることはできないが、それ以外の解決策またはコードを変更しようとする。 – ANK

答えて

2

$ scope.getpurchaseList.products = {}はあなたに影響していると思います。コントローラがロードするとすぐに配列の代わりに空のオブジェクトを渡します。だから、それを取り外してみてください。

0

変更だけ製品$ scope.products作る方法を、私に知らせてください。なぜなら、あなたはsavepurchase()関数にパラメタとして製品を渡すからです。したがって、コントローラのscope.productsとして定義する必要はありません

+0

ありがとう@Sachila Ranawaka。しかし、私はそれを試みたが、私に同じエラーを与えている – ANK

+0

は、フィドラーまたはプランカーを提供することができます –

+0

その長いコードなので、すべてのフィールド@ sachila Ranawakaで可能ではない – ANK

1

条件if($scope.products._id==undefined)が壊れています。あなたが書いたロジックをチェックしてください。 とproductsの両方がsavepurchase機能で異なる変数であることを覚えておいてください。

$scope.productsを初めて延長した後、条件返信false

+0

ありがとうございます。@Sachink。あなたが言ったように、私はその条件を取り除くことによって機能を試みました。 – ANK

+0

私はヒントを見つけたのは、トラックを使用してオプションを文字列化することですが、そのコードは動作していないか、他のソリューションか、コードを変更しようとしています – ANK