2013-07-17 100 views
1

繼承MODEL2屬性我有一個模型,收集骨幹從MODEL1屬性

Model1 = Backbone.Model.extend(); 
Model2 = Backbone.Model.extend({ 
    defaults: { 
     code:'', 
     m1_id: ?????, // this part should get the Model1 "id" attribute 
     id: ''  //     e.g. the value of m1.get('id'); 
    } 
}); 

C = Backbone.Collection.extend({ 
    model: Model2 
}); 

,使每個

var m1 = new Model1(); 
var m2 = new Model2(); 
var c = new C(); 

一個實例,並設置值

m1.set({'code':'0001', 'type': 'O', id: 1}); 

c.add({'code':'sample1', 'id':1}); // note: i did not set the m1_id 
c.add({'code':'sample2', 'id':2}); 

但模型裏面收集得到Model1 id attrtibute,類似

集合必須具有此

c.at(0).toJSON(); 
-> {'code':'sample1', 'm1_id': 1, id: 1} // note: the "m1_id" value is 
c.at(1).toJSON();       //  from Model1 "id" attribute 
-> {'code':'sample2', 'm1_id': 1, id: 2} 

我怎麼能自動從型號1屬性設置Model2的屬性集合裏面..謝謝!

回答

3

首先,你有一些問題,你的代碼:

VAR M1,M2和C應與關鍵字調用:新實例化的模型和集合

例如var m1 = new Model1()

你的代碼添加到您的收藏(c.add),還缺少右大括號

c.add({'code':'sample1'); // should be c.add({code:"sample1"}); 

你的代碼的問題並不完全清楚,我,但我懷疑你可能試圖或許使用相同的id將模型添加到您的集合中。同一ID的多個模型不會被添加到您的收藏,按主幹文檔:

注意添加相同的模型(具有相同ID的模型)的 集合不止一次是無操作。

如果你需要從另一個模型傳遞id,你需要設置另一個屬性,比如將parent_id傳遞給你的集合。

var temp_id = m1.get('id'); c.add({code:"sample3", id:temp_id});

+0

遺憾的錯字錯誤.. =)反正,什麼IM試圖弄清楚我們的..如果有一種方法,如果我的插圖新模式,以收集不設置m1_id/parent_id它會自動設置..謝謝! – jrsalunga

0
Model1 = Backbone.Model.extend(); 
var m1 = new Model1(); 

Model2 = Backbone.Model.extend({ 
    defaults: { 
     code:'', 
     m1_id: '', 
     id: ''  
    } 
}); 
var m2 = new Model2(); 


C = Backbone.Collection.extend({ 
    model: Model2, 
    initialize: function(){ 
     this.on('add', this.onAddModel, this); 
    }, 
    onAddModel: function(model){  
     model.set({'m1_id': m1.get('id')}); 
    } 
}); 
var c = new C(); 


m1.set({'code':'0001', 'type': 'O', id: 1}); 
c.add({'code':'sample1', 'id':1}); // trigger the c.onAddModel function 
c.at(0).toJSON(); 
-> {'code':'sample1', 'm1_id': 1, id: 1}