主干提取集合生命周期,从响应设置属性
Backbone fetch collection lifecycle, set property from response
问题:
Backbone中集合的标准获取方法的生命周期是什么?即触发哪些事件/方法以及以什么顺序触发?
上下文:
我从服务器收到的集合的 JSON 响应具有模型数组和一个属性:
{
results: [model1, model2],
aProperty: "example"
}
我想从 JSON 响应中读取此属性,并将其设置为集合上的属性。我目前正在覆盖解析函数:
parse: function(response, options) {
this.aProperty = response.aProperty;
return response.results;
}
这感觉就像在集合中设置属性的错误位置 - parse 函数具有特定的作业,并且在验证模型数组之前发生。
我也尝试过:
initialize: function() {
this.on('sync', function(collection, resp) {
collection.aProperty = resp.aProperty;
});
}
但是,在获取的成功回调之后调用"sync"(我需要在成功回调之前将属性设置为获取的一部分)。
在阅读了一些源代码之后,我认为您要做的是在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();
}
});
查看带注释的主干源文档。特别是Backbone.sync上的位会有所帮助。
相关文章:
- 如何在数据表中设置从Ajax响应选中的复选框
- angular.js我如何设置数据什么是响应值
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- 正在Javascript响应中设置会话变量
- 我如何设置HTTP头“;访问控制允许起源”;用于来自thttpd web服务器的HTTP响应
- 为什么新js Fetch标准禁止响应头名称为'设置Cookie 1/2'
- 使用命名函数设置多个事件响应
- 如何在jquery ajax响应后设置jquery滑块的起始值
- 设置跨域文件上传的响应标头和请求标头
- Chrome浏览器:未从响应标头设置cookie
- 从ajax响应设置图像内容
- 使用 json 将 Ajax 响应设置为下拉
- 我可以将表单提交的响应设置为对话框的内容吗?
- 主干提取集合生命周期,从响应设置属性
- 如何通过异步xmlhttprequest响应设置变量
- js变量'未定义'在IE中(值由ajax响应设置)
- 根据服务器响应设置复选框
- 如何用Django响应设置服务器端发送事件
- 如何将表单post动作的响应设置为框架源
- 根据返回响应设置范围