1

angularjsを使用してスタブ開発を行っています。私のスタブはサーバー上の JSON ファイルです。そのため、「スタブ」関数内で $http 呼び出しを行ってスタブを取得しています。ただし、$http は非同期であるため、whenGET は常に空のデータを返します (http が完了するのを待ちません)。この件に関する現在の質問を調べました。これらは、http 呼び出しの戻り値をスコープ データ モデルに割り当てる方法を提供します。httpリクエストが完了した後にデータを返したい。以下はコードです。

stubbedOstnApp.run(['$httpBackend','$http',function($httpBackend, $http){
    var tempData;
    var get = function (){
        return $http.get('../test/data/program-categories.json').then(function(data){
            tempData = data.data;
            console.log(tempData);
            return tempData;
        })
    };
    get();
    console.log(tempData);

    $httpBackend.whenGET('lookup/program-categories').respond(tempData);
    $httpBackend.whenGET(/^views\//).passThrough();
    $httpBackend.whenGET(/^\.\.\/test\/data\//).passThrough();
}]);

基本的に、tempData が設定されるまで whenGET の行を待機させます。get 関数内の tempData は、 whenGET メソッドの実行後にコンソールに記録されます。

4

2 に答える 2

1

$http.get に提供する成功コールバックに tempData を入力する必要があります。

このようにしてみてください:

 var get = function (){
    return $http.get('../test/data/program-categories.json').then(function(data){
        tempData = data.data;
        $httpBackend.whenGET('lookup/program-categories').respond(tempData);            
        console.log(tempData);
        return tempData;
    })
};
get();
console.log(tempData);
于 2014-04-25T19:26:25.253 に答える