我可以将另一个骨干模型设置为其属性吗?
我有一个代表基本实体的模型,我希望将其重新用作其他内容的一部分。 但是,看起来Backbone的模型属性值只能是String。
答案 0 :(得分:2)
排序答案:是的,您可以:
myHouse.set({ door: new Door() })
但是,在我看来,这样做并不是一个好主意,因为我不认为Backbone期望在Objects
中找到Model.attributes
。我没有尝试,但如果属性的某个人是对象,我认为像Model.toJSON
这样的方法不会有正确的行为。
但是这样说,我认为在模型中声明真实属性没有任何问题,这些属性引用了以下对象:
myHouse.door = new Door();
答案 1 :(得分:0)
如果我理解正确你需要做那样的事情:
var ModelOne = Backbone.Model.extend({
method : function() {
console.log('ModelOne > method');
},
sayHello : function() {
console.log('ModelOne > hello');
}
});
var ModelTwo = ModelOne.extend({
method : function() {
ModelOne.prototype.method.apply(this);
console.log('ModelTwo > method');
}
});
var methodTwo = new ModelTwo();
methodTwo.method();
methodTwo.sayHello();
输出:
ModelOne > method
ModelTwo > method
ModelOne > hello
答案 2 :(得分:0)
将Backbone.Model
设置为另一个模型的属性的另一种变体是将其设置为默认值:
var UserModel = Backbone.Model.extend({
defaults: {
id: null,
name: null,
address: new AddressModel()
}
});
var someUser = new UserModel();
someUser.address.set('country', 'ZA');
执行someUser.save()
someUser.attributes.address
时,AddressModel
中的数据将是常用数据对象。
!尚未测试的一件事由我在someUser.fetch()
[]