2012-05-15 229 views

回答

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

排序答案:是的,你可以

myHouse.set({ door: new Door() }) 

但是,在我看來,這樣做並不是一個好主意,因爲我認爲Backbone不是exp在Model.attributes中發現Objects。我沒有嘗試,但我不認爲像Model.toJSON這樣的方法會有一個正確的行爲,如果某人屬性是一個對象。

但這麼說,我看不出有什麼問題,申報示範真實屬​​性,引用了對象,如:

myHouse.door = new Door(); 
+0

我相信,這將工作就像一個魅力人口。該文檔還表示,這是將集合嵌套到模型中的常見做法,所以我不明白爲什麼嵌套模型會受到傷害。所以,+1的答案和[這裏是我正在談論的部分](http://documentcloud.github.com/backbone/#FAQ-nested) – Alladinian

+0

如果有什麼我會去宣佈子模型和子集合爲REAL屬性,而不是「過濾」模型的屬性。再加上你將不得不覆蓋你的toJSON方法遞歸地遍歷你的子模塊和集合。如果這就是你想要的,但請檢查https://github.com/PaulUithol/Backbone-relational/ –

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.attributes.address將是一個通常的數據someUser.save()數據對象


一件事尚未測試通過AddressModelsomeUser.fetch()