2

私はこのリソースを持っています:

myModule.factory('MyResource', ['$resource', 'geoLocationService', function ($resource, geoLocationService ) {

    return $resource('/blabla', {}, {
        'getData': { method: 'GET', params: { city: geoLocationService.getMyCity() } }
    });
}]);

問題は、 を呼び出すMyResource.getData()までに、geoLocationService が場所を取得していないことです。
geoLocationService には、呼び出しを許可する約束があります

geoLocationService.promise.then(...)

しかし、この約束をリソースと統合する方法がわかりません。何か案が?

編集 私は次のようなものを探しています:

myModule.factory('MyResource', ['$resource', 'geoLocationService', function ($resource, geoLocationService ) {

    return $resource('/blabla', {}, {
        'getData': { method: 'GET', beforeFetchPromise: geoLocationService.promise, { city: geoLocationService.getMyCity() } }
    });
}]);

そのため、geoLocationService.promise が解決または拒否された場合にのみ、パラメーターを使用した ajax 呼び出しが発生します。

4

1 に答える 1

0

コントローラーに promise を追加する必要があると思います。

$scope.resultsFromResource = YourResourceName.query().$promise.then(function(result){
    // code inside promise
})

また、私の例のようにクエリを使用するか、それを維持したい場合は名前 getData を一重引用符で囲むことをお勧めします。

于 2014-05-18T16:26:41.967 に答える