【问题标题】:angularjs resource limit changes after first call第一次调用后angularjs资源限制发生变化
【发布时间】:2014-11-24 21:19:59
【问题描述】:

问题描述

我正在使用角度资源从我的服务器获取数据。我对其进行了一些扩展,以确保我的所有资源都有安全标头。

问题是在第二个获取请求及以后,我的获取请求发送限制=0,只有第一个获取请求正确发送(限制=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

【问题讨论】:

  • 您是否尝试过调试 for 循环并查看返回的内容?
  • @MichelTomé - 我知道返回的内容。我得到了所有的对象,而不是只有 12 个。这显然是因为请求有 limit=0 而不是 limit=12

标签: angularjs angular-resource


【解决方案1】:

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

将securedFactory 更改为服务并将“全局变量”移动到返回的函数中解决了它。必须在每次securedService调用之前添加新的课程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2015-10-21
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多