angularjs与资源整合承诺

时间:2013-07-08 06:27:33

标签: angularjs promise angular-resource

我有这个资源:

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调用。

1 个答案:

答案 0 :(得分:0)

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

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

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