Изменения лимита ресурса angularjs после первого звонка
Описание проблемы
Я использую угловой ресурс, чтобы получить данные с моего сервера. Я немного расширил его, чтобы убедиться, что все мои ресурсы имеют заголовки безопасности.
Проблема заключается в том, что при втором запросе get и при включении мои запросы get отправляются с limit=0, и только первый запрос get отправляется правильно (с limit=12).
Часть кода
Это моя базовая фабрика ресурсов (чтобы убедиться, что все ресурсы содержат ключи и все остальное):
app.factory('SecuredFactory', function($resource){
var DEFAULT_ACTIONS = {
'get': {method:'GET'},
'query': {method:'GET', isArray:true},
};
var DEFAULT_PARAMS = {
'limit': 12,
'format': 'json'
};
for(var key in DEFAULT_ACTIONS){
DEFAULT_ACTIONS[key]['headers'] = <headers object>;
}
var securedResource = function(url, paramDefaults, actions){
for (var attrname in actions) {
DEFAULT_ACTIONS[attrname] = actions[attrname];
}
for (var attrname in paramDefaults) {
DEFAULT_PARAMS[attrname] = paramDefaults[attrname];
}
var defaultResource = $resource(url, DEFAULT_PARAMS, DEFAULT_ACTIONS);
return defaultResource;
};
return securedResource;
});
И это пример того, как я создал конкретную фабрику из защищенной:
app.factory('QuestionFactory', function(SecuredFactory, Constants){
var url = Constants.SERVER_URL + 'question/';
var Task = SecuredFactory(url);
return Task;
});
И вот, наконец, как я это использую, например:
// filtering example (not important for this matter):
var filtering = {author: "Daniel"};
var contents = [];
var resource = QuestionFactory;
resource.get(filtering, function (res) {
// success fetching
$scope.contents = $scope.contents.concat(res['objects']);
}
// failed fetching
, function (err) {
}
);
Запросы
первый запрос:
question?format=json&limit=12&offset=0
Второй запрос и по:
question?format=json&limit=0&offset=0
1 ответ
Моя проблема заключалась в том, что переменная DEFAULT_PARAMS была объявлена глобальной. Я не осознавал, что вызов защищенной фабрики с {limit: 0} переопределит глобальный, поэтому изменил лимит на 0 для ВСЕХ моих ресурсов.
Изменение securedFactory на службу и перемещение "глобалов" в возвращаемую функцию решили эту проблему. Пришлось добавлять новые конечно перед каждым вызовом securedService.