第一次调用后angularjs资源限制更改

时间:2014-11-24 11:50:13

标签: angularjs angular-resource

问题描述

我使用角度资源从我的服务器获取数据。我已经扩展了一点,以确保我的所有资源都有安全标头。

问题是在第二个get请求和on上,我的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 个答案:

答案 0 :(得分:0)

我的问题是DEFAULT_PARAMS变量被声明为全局变量。我没有意识到用{limit:0}调用安全工厂会覆盖全局,因此我的资源的所有将限制更改为0。

将securedFactory更改为服务并移动&#34;全局&#34;进入返回的函数解决了它。必须在每次secureService调用之前添加新的课程。