我有这样的模型:
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,因为不需要额外的取回。