Изменения лимита ресурса 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.

Другие вопросы по тегам