获取骨干模型父关系而不需要额外的请求



我有这样的模型:

window.Client = Backbone.RelationalModel.extend({
    urlRoot: '/api/Client',
    relations: [
        {
            type: Backbone.HasMany,
            key: 'appointments',
            relatedModel: 'Appointment',
            autoFetch:true,
            reverseRelation: {
                key: 'client',
                keySource: 'client_id',
                includeInJSON: 'id',
                autoFetch:true,
            }
        }
    ]
}); 
window.Appointment = Backbone.RelationalModel.extend({
    urlRoot: '/api/Appointment',
});

JSON在'/api/Appointment'响应中包含client对象数据,所以当我获取单个约会时,我希望它包含相关的Client对象,但它没有。

var a= new Appointment({id:1});
a.fetch();
a.get('client');//null
a.fetchRelated('client')//this will make another request and get data that browser already have

是否有可能使主干关系自动建立父关系?

fetch()是一个异步方法,它可能需要一些时间来完成。在检查客户端是否初始化之前,尝试等待a.f efetch完成:

a.fetch({
    success: function () {
       console.log(a.get('client'));
    }
});

另外,你说/api/Appointment返回的json包含客户端数据。如果是这种情况,你不应该将autoFetch设置为true,因为不需要额外的取回。

相关内容

  • 没有找到相关文章