我有这个资源:
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调用。
答案 0 :(得分:0)
我认为你应该在控制器中添加一个承诺:
$scope.resultsFromResource = YourResourceName.query().$promise.then(function(result){
// code inside promise
})
我还建议您使用我的示例中的查询,或者如果您想保留它,请删除名称getData周围的单引号。