2016-10-25 14 views
0

私はservices.jsにこの機能を移動したい:角度サービスの応答(取得)機能を変更するにはどうすればよいですか?

News.all().async().then(function(data) { 
    $scope.news = data['data']['NewsList']; 
}); 

そして、このコマンドでcontroller.jsでそれを呼び出すより:

$scope.news = News.all(); 

私は多くの方法を試してみてください、しかし、彼らは動作しませんでした。まあ

.factory('News', function($http) { 
    function returnNews() { 
    return { 
     async: function() { 
     return $http.get('test.json'); 
     } 
    }; 
    } 
    return { 
    all: function() { 
     return returnNews(); 
    } 
    } 
}); 

答えて

1

あなたが最後にNews.all()を呼び出す場合は、非同期プロパティを持つオブジェクトを取得します:{async}を、私はこれがあなたが望むものではないと思います

は、ここに私のservices.jsです。

.factory('News', function($http) { 
    return { 
    all: function(callback) { 
     return $http.get('test.json').then(callback); 
    } 
    } 
}); 

、あなたがしなければならないコントローラに:あなたはどうすることができますすることは、サービスへのコールバックを渡すことである

News.all(function(data){ 
    $scope.news = data 
}); 
+1

これはアンチパターンのように思えます。プロビジョニングを従来のコールバックスタイルの非同期操作に変換するのではなく、プロミスとチェーンを公開するだけです。 '$ http.get( 'test.json')' –

+0

を返すか、@WilliamBがsugestedとして行うことができます – Marius

関連する問題