在调用模型的fetch()
之后,有什么好的方法可以自定义服务器的响应?
我问的原因是因为我正在处理一个模型有几个子模型的情况。从服务器返回的数据需要在子模型中分开。
示例:
// A call to "fetch()" on this model needs to split up the returned data
// between the two child models. Once this happens, their 'change'
// events should fire and update their respective views.
var ParentModel = Backbone.Model.extend({
initialize: function(){
this.childModel_01 = new ChildModel_01({});
this.childModel_02 = new ChildModel_02({});
}
})
var ChildModel_01 = Backbone.Model.extend({});
var ChildModel_02 = Backbone.Model.extend({});
非常感谢!
答案 0 :(得分:2)
这可能是一个更好的选择,除非你有一个特定的理由让两个模型嵌套属性在另一个模型下,直接调用Backbone.sync
并且有一个专门用于访问服务器的单独函数。
在我的应用程序中,我通常有一个/bootstrap
端点,可以同时为多个模型/集合执行此操作。在你的情况下,它看起来像这样:
var ChildModel_01 = Backbone.Model.extend({});
var ChildModel_02 = Backbone.Model.extend({});
var childModel_01 = new ChildModel_01({});
var childModel_02 = new ChildModel_02({});
Backbone.sync('read', {}, {
url : '/bootstrap',
success : function(resp, status, xhr) {
childModel_01.set(resp.child_01)
childModel_02.set(resp.child_02)
},
error : function() {
// Deal with error here
}
});
来自服务器的JSON响应如下所示:
{
"child_01": {
"attr" : "val",
"attr2" : "val2"
},
"child_02": {
"attr" : "val",
"attr2" : "val2"
}
}
如果确实需要它们在模型上,请查看模型上的parse()
函数,以便更好地处理服务器响应。
答案 1 :(得分:1)
有一个解析函数,它是服务器响应和模型中JSON映射之间的桥梁。您必须使用它来自定义服务器响应:
答案 2 :(得分:0)
由于骨干是一种宁静的服务,RESTful的方式就是当你的响应回来时,它有获取子资源的URL,因为我认为它们是自己的资源。
所以回复可能如下:
{
attr1: 'value1',
attr2: 'value2',
childModelURLS: {
childModel1URL: 'http://your.server.com/path/to/child/resource',
childModel2URL: 'http://your.server.com/path/to/child/resource',
childModel3URL: 'http://your.server.com/path/to/child/resource'
}
}