2016-06-16 5 views
1

私は角度コントローラでこの機能を持っています。この新しい値を配列にプッシュするにはどうすればよいですか?

 $scope.addPart = function (part) { 
     $http.get('stock/' + this.part.oemnumber).success(function (result) { 
      $scope.stock = result; 
     }); 
     $scope.woParts.push({"id":part.id, "name":part.partname, "partno":part.partno, "oemnumber":part.oemnumber, 
     "stock":part.stock, "price":stock.unitcost}); 
     $scope.part = ''; 
    }; 

関連する在庫レコードが正常に返され、在庫が表示されコンソールに出力され、ビューに表示されます。私の問題は、値をwoParts配列にプッシュする必要があることです。

現在の構文では未定義です。私はそれを "価格"に変更しようとすると:$ scope.stock.unitcostそれはエラーをスローしませんが、まだ動作しません。

私には何が欠けていますか?

 $scope.addPart = function (part) { 
     $http.get('stock/' + this.part.oemnumber).success(function (result) { 
      $scope.stock = result; 
      $scope.part.price = $scope.stock.unitcost; 
     }); 
     $scope.woParts.push({"id":part.id, "name":part.partname, "partno":part.partno, "oemnumber":part.oemnumber, 
     "stock":part.stock, "price":part.price}); 
     $scope.part = ''; 
    }; 

私は取得株式を分離し、2つの機能にプッシュするべき私も手の前にそれを定義しようとしたが、それは動作しませんか...?

ありがとうございます!あなたは非同期に呼び出され成功機能、内部の$scope.stockを定義し、その次の行されている

+0

それはscope.stock.unitCost $でなければなりません。あなたはログインして、$ http.get呼び出しから得られた結果を確認できますか? – Aravind

+0

うん、$ scope.stock.unitcostが正しいと私が望む値を返します。以下に答えます - プッシュはhttpコールに移動する必要があります。 – RushVan

答えて

1

それはhttp呼び出しが戻った後に初期化されるようにどこpushstockはまだ、初期化されていません。 代わりに、次の操作を行うことができます:

$scope.addPart = function (part) { 
     $http.get('stock/' + this.part.oemnumber).success(function (result) { 
      $scope.stock = result; 
      $scope.woParts.push({"id":part.id, "name":part.partname, "partno":part.partno, "oemnumber":part.oemnumber, 
     "stock":part.stock, "price":stock.unitcost}); 
     }); 

    }; 
+0

うん、そうだ。ありがとう、私は別々に2ビットを書いていました。ありがとう! – RushVan

1

ここにはいくつかの問題があります。最初はstock.unitcostを使用しており、実際には$scope.stock.unitcostが必要だと思います。 2番目の問題は、$http.getが非同期であり、$scope.stock.unitcostを使用しようとする前にその約束が解決されないことです。ここで私はあなたがあなたのスニペットをリファクタリングしたいと考えている方法です(あなたが約束成功した解決機能の内部で機能を移動する必要があります):

$scope.addPart = function (part) { 
    $http.get('stock/' + this.part.oemnumber) 
     .then(
      function(response) { 
       $scope.stock = response.data; 
       $scope.part.price = $scope.stock.unitcost; 
       $scope.woParts.push({ 
        "id":part.id, 
        "name":part.partname, 
        "partno":part.partno, 
        "oemnumber":part.oemnumber, 
        "stock":part.stock, 
        "price":part.price}); 
       $scope.part = ''; 
      }, 
      function(error) { 
       // handle the error from your $http.get 
      }); 
}; 
+0

正解、gaurav5430はちょうどそれにあなたを打つ。 – RushVan

関連する問題