问题:
Backbone中集合的标准获取方法的生命周期是什么?什么事件/方法被解雇,以什么顺序?
上下文:
我从服务器收到的JSON响应包含一系列模型和属性:
{
results: [model1, model2],
aProperty: "example"
}
我想从JSON响应中读取此属性,并将其设置为Collection上的属性。我目前正在重写解析函数:
parse: function(response, options) {
this.aProperty = response.aProperty;
return response.results;
}
这感觉就像在集合中设置属性一样错误 - 解析函数具有特定的作业,并且在模型数组被验证之前发生。
我也尝试过:
initialize: function() {
this.on('sync', function(collection, resp) {
collection.aProperty = resp.aProperty;
});
}
然而,在获取成功回调之后调用'sync'(我需要在成功回调之前将属性设置为fetch的一部分)。
答案 0 :(得分:0)
在阅读了一些源代码之后,我认为您要做的是在request
事件中捕获它。它在Backbone.sync
:
model.trigger('request', model, xhr, options);
在这里,您可以覆盖作为请求的一部分发送的回调,并使用您要进行的更改进行包装。我没有对此进行测试,但也许这可以给你一个想法:
this.on('request', function(model, xhr, options) {
var success;
success = options.success;
options.success = function(resp) {
model.aProperty = resp.aProperty;
success();
}
});
结帐annotated backbone source documentation。特别是Backbone.sync上的位会有所帮助。