2016-11-11 5 views
0

私は工場を呼び出して "variableToExpose"を設定するコントローラを持っています。私はconsole.log($ scope.variableToExpose)が定義されていないと出てくる。その変数をコントローラに公開する最良の方法は何ですか?角度 - コントローラに変数を公開する

.controller('SomeCtrl', function($scope, $http, $state, SomeFactory) { 

    console.log($scope.variableToExpose); //returns undefined 

    SomeFactory.getRequest($id).then(function(response){ 
     $scope.variableToExpose = varFromGetRequest; 
    } 
} 

ありがとうございます!

+1

変数を定義するコードを実行する前に変数の値を表示しようとしています。あなたは何を期待していますか?そして、たとえそのコードの後であったとしても、要求は非同期です。変数を定義する行の後に、そのコードをコールバック関数の中に入れます。 –

答えて

2

console.logを成功ハンドラ内に移動します。約束が解決した後に約束の

app.controller('SomeCtrl', function($scope, $http, $state, SomeFactory) { 


    //console.log($scope.variableToExpose); //returns undefined 

    SomeFactory.getRequest($id).then(function successHandler(response){ 
     //$scope.variableToExpose = varFromGetRequest; 
     $scope.variableToExpose = response; 
     console.log($scope.variableToExpose); 
    }); 
}); 

.then方法が成功ハンドラ関数を呼び出します。 $qサービスは、唯一の引数としてpromiseの解決された値でその関数を呼び出します。

+0

応答に感謝します!問題は、私が元々console.log()を持っていたvariableToExposeにアクセスしたいのです。 – Andres

+1

その場合、 'Timemachine' APIを使用してください。しかし、漏れが時空間連続で波紋を起こす可能性があることに注意してください。 – georgeawg

+0

非常に面白い...これを行う別の方法がある必要があります:) – Andres

関連する問題