我有一个模型Order
,其中包含两个嵌套模型User
和Hotel
。
var User = Backbone.Model.extend(){
defaults: { name : '----'}
}
var Hotel = Backbone.Model.extend(){
defaults: { name : '----'}
}
var Order = Backbone.Model.extend(){
urlRoot: '/order',
initialize : function(){
this.set("hotel", new Hotel())
this.set("user", new User())
}
}
以下是fetch
的观点:
var OrderPanelView = Backbone.View.extend({
el : '#page',
render : function(options){
var that = this
var order = new Order({id: options.id})
order.fetch({
success: function(obj){
console.log(order.get('user')); //this still print the default value
console.log(obj.get('user')); //this also prints the default value
console.log(obj) //this has the attributes sent by server
}
})
}
})
TL; DR
我的问题是:如何在模型中设置获取响应数据。我是否必须手动设置数据?我错过了什么吗?
答案 0 :(得分:1)
获取将自动设置模型。当然,服务器响应应该是正确的JSON模型。
我认为你的问题是,为什么酒店和用户模型都没有填写。好吧,fetch只设置所有值。它只会将初始化的用户/酒店模型与服务器中的数组/对象合并。可能会覆盖它。一个正确的方法是使这些模型是:
order.fetch({
success: function(obj){
order.set('user', new User( order.get('user') ) );
order.set('hotel', new Hotel( order.get('hotel') ) );
}
});