问题描述
我使用角度资源从我的服务器获取数据。我已经扩展了一点,以确保我的所有资源都有安全标头。
问题是在第二个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
答案 0 :(得分:0)
我的问题是DEFAULT_PARAMS变量被声明为全局变量。我没有意识到用{limit:0}调用安全工厂会覆盖全局,因此我的资源的所有将限制更改为0。
将securedFactory更改为服务并移动&#34;全局&#34;进入返回的函数解决了它。必须在每次secureService调用之前添加新的课程。