我可以将另一个骨干模型设置为其属性吗?将骨干模型属性值设置为另一个模型
我有一个模型代表一个基本的实体,我想重用它作为别的东西的一部分。 但是,它看起来像Backbone的模型属性值只能是String。
我可以将另一个骨干模型设置为其属性吗?将骨干模型属性值设置为另一个模型
我有一个模型代表一个基本的实体,我想重用它作为别的东西的一部分。 但是,它看起来像Backbone的模型属性值只能是String。
如果我理解正确的,你需要做这样的事情:
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
排序答案:是的,你可以:
myHouse.set({ door: new Door() })
但是,在我看来,这样做并不是一个好主意,因为我认为Backbone不是exp在Model.attributes
中发现Objects
。我没有尝试,但我不认为像Model.toJSON
这样的方法会有一个正确的行为,如果某人属性是一个对象。
但这么说,我看不出有什么问题,申报示范真实属性,引用了对象,如:
myHouse.door = new Door();
还有一个设置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.attributes.address
将是一个通常的数据someUser.save()
数据对象。
!一件事尚未测试通过我是AddressModel
在someUser.fetch()
我相信,这将工作就像一个魅力人口。该文档还表示,这是将集合嵌套到模型中的常见做法,所以我不明白为什么嵌套模型会受到伤害。所以,+1的答案和[这里是我正在谈论的部分](http://documentcloud.github.com/backbone/#FAQ-nested) – Alladinian
如果有什么我会去宣布子模型和子集合为REAL属性,而不是“过滤”模型的属性。再加上你将不得不覆盖你的toJSON方法递归地遍历你的子模块和集合。如果这就是你想要的,但请检查https://github.com/PaulUithol/Backbone-relational/ –