使用Backbone-relational我希望以这种方式完成模型任务:
task = {
id: 1
assigned_id: 2
name: 'read a book',
user: userModel
};
我确实尝试过这种方式(1)但结果是以下(2)。
有什么想法吗?
(1)
var User = Backbone.RelationalModel.extend({
// urlRoot
});
var Task = Backbone.RelationalModel.extend({
relations: [
{
type: Backbone.HasOne,
key: 'user',
relatedModel: User
}
],
// urlRoot
});
(2)
task = {
id: 1
assigned_id: 2
name: 'read a book',
user: null // null instead of having something related to user model
};
答案 0 :(得分:2)
不确定你的任务模型的确切JSON是什么,所以我猜这里。
Backbone-relational期望完全嵌套的模型:
task = {
id: 1
assigned_id: 2
name: 'read a book',
user: {
name: 'Fred Rogers',
id: 42,
occupation: 'Hero'
}
};
或字符串/数字,它将假定为相关模型的id:
task = {
id: 1
assigned_id: 2
name: 'read a book',
user: 42
};
根据你为用户模型获得的null
值,我猜你是第二种情况。
当骨干关系实例化模型的实例,并且相关模型是“关键”字符串/数字时,它将搜索其模型的内部存储以尝试查找匹配模型。如果找到它,则将该模型设置为用户属性的值。
如果找不到模型,则会隐藏模型相关关系属性model._relations[n].keyContents
中的关键字,并将用户值设置为null
。
此时您将使用fetchRelated
函数从数据存储区/ API获取相关模型。
因此,请尝试调用task.fetchRelated()
以获取相关的用户模型:
task.fetchRelated('user');