2

angularコントローラーにコードがあります

$scope.message = '';
$http.post('/save/').success(function(data) {                  
    $scope.message = "success";
});
console.log($scope.message);
//get empty string?

実行後、$scope.message に空の文字列が表示されるのはなぜですか? 別の関数の値を再利用したいので、成功が値を返すときの http.post の方法。とにかくありがとう。

4

3 に答える 3

4

あなたが探しているのはこれです:

$scope.$watch("message", function(value){
  console.log($scope.message);
}); 

これが私が作ったサンプルplnkrの例です

于 2013-01-29T11:08:53.707 に答える
1

どうしよう -

$scope.message = '';
$http.post('/save/').success(function(data) {                  
    $scope.message = "success";
    console.log($scope.message);
});

?

または私は何か他のものを見逃していますか?

于 2013-01-29T10:29:05.863 に答える
0

実行後、$scope.message に空の文字列が表示されるのはなぜですか?

応答が利用可能になると、 $httpの成功コールバックが非同期的に呼び出されます。これは、console.log() がコールバックの前に実行できる理由を説明しています。別の関数が値を必要とする場合、@ShaiRez はすでに 2 つのソリューションを提供しています。

  1. 成功コールバック内で他の関数を呼び出す
  2. $watch値を確認し、$watch リスナー コールバック内で他の関数を呼び出します
于 2013-01-29T17:10:29.470 に答える