2013-07-08 2 views
2

У меня есть этот ресурс:angularjs интегрировать обещающий с ресурсом

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(...) 

Но я не знаю, как я могу интегрировать это обещание с ресурсом. Есть идеи?

EDIT Я ищу что-то вроде:

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

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

Таким образом, только когда geoLocationService.promise разрешен или отклонен, Аякса вызов с параметрами будет происходить.

+0

Любое обновление по этой проблеме? –

ответ

0

Я думаю, вы должны добавить обещание в контроллере:

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

Я хотел бы также предположить, что вы либо использовать запрос, как в моем примере или удалить одиночные кавычки вокруг вашего имени GetData, если вы хотите, чтобы держать это.

+0

Функция geoLocationService() должна работать до вызова на ресурс, а не после. – Naor

Смежные вопросы