如何设置或映射对骨干中模态属性的获取响应

时间:2014-07-03 14:49:22

标签: backbone.js

我有一个模型Order,其中包含两个嵌套模型UserHotel

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

我的问题是:如何在模型中设置获取响应数据。我是否必须手动设置数据?我错过了什么吗?

1 个答案:

答案 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') ) ); 
             }
 });
相关问题