我可以將另一個骨幹模型設置爲其屬性嗎?將骨幹模型屬性值設置爲另一個模型
我有一個模型代表一個基本的實體,我想重用它作爲別的東西的一部分。 但是,它看起來像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/ –