我可以设置另一个主干模型作为它的属性吗?
我有一个代表基本实体的模型,我想将它作为其他东西的一部分重用。但是,Backbone 的模型属性值似乎只能是字符串。
我可以设置另一个主干模型作为它的属性吗?
我有一个代表基本实体的模型,我想将它作为其他东西的一部分重用。但是,Backbone 的模型属性值似乎只能是字符串。
排序答案:是的,您可以:
myHouse.set({ door: new Door() })
但是,在我看来,这样做并不是一个好主意,因为我不认为 Backbone 期望Objects
在Model.attributes
. 我没有尝试,但如果属性中的某个人是对象,我认为像这样的方法Model.toJSON
不会有正确的行为。
但是这么说,我认为在模型中声明引用对象的真实属性没有任何问题,例如:
myHouse.door = new Door();
如果我理解正确,您需要执行以下操作:
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
设置另一个模型的属性的另一种变体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()