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

我认为您应该在控制器中添加一个承诺:

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

我还建议您在我的示例中使用查询,或者如果您想保留它,请删除您的姓名 getData 周围的单引号。

于 2014-05-18T16:26:41.967 回答