2012-06-14 92 views
3

我已經當屬性被改變以具有綁定功能的name屬性的模型被稱爲:Backbone.js:獲取集合後引發模型更改事件?

var Workitem = Backbone.Model.extend({ 
           initialize: function(){ 
           this.bind('change:name', function() { 
              alert('name'); 
              } 
              }); 
           }, 
           defaults: { 
           name: 'Name' 
           } 
           }); 

如果我取一個模型,這個工作的,當我設置觸發更改事件該屬性以及何時獲取數據。

但後來我創建了一個集合,我想取方法的過程中被觸發每個取模型到集合事件:

var WorkitemList = Backbone.Collection.extend({ 
             model: Workitem, 
             }); 

var workitemsList = new WorkitemList(); 
workitemsList.fetch(); 

這可能嗎?

+0

你有網址的收集和模型集還是值神奇地從什麼地方出現? – jakee

+0

嗨Jakee,我使用backbone.localStorage.js,所以當我執行提取時,數據是從HTML5本地存儲中讀取的,但我認爲這與我的問題無關。當我做一個單一的模式(存儲在localStorage的)相同,則後取觸發更改事件,但如果模型是這是行不通的 – Marshal

回答

0

獲取集合替換服務器響應集合中的模型..這是你想要的它不更新每個集合中的模型..最簡單的解決將是遍歷集合獲取各模型,但你有多個請求到服務器,錯過任何新增加的模型..

我認爲你想達到什麼你需要創建和獲取您的集合的另一個實例,然後比較模型與需要你原來的收集和更新..不是真正的漂亮..

+0

喜Lecstor集合項目,謝謝您的回答。我試圖循環到模型中的fetch()方法後做你的解決方法,但是這是不工作(警報返回零,而不是獲取的項目數): 'VAR WorkitemList = Backbone.Collection.extend({ \t模型:工作項, \t初始化:功能(){ \t \t this.fetch({ \t \t \t成功:警報(this.length) \t \t}); \t} });' – Marshal

+1

我認爲應該更像.. var WorkitemList = Backbone.Collection.extend({model:Workitem,initialize:fun ction(){this.fetch({success:function(collection,response){alert(collection.length)}}); }});' – lecstor

0

您可以覆蓋集合的fetch - 函數調用獲取的每個m奧德爾個人。但這是非常殘酷的力量。

fetch: function() { 
    for (var model: this.models) { 
    model.fetch(); 
    } 
} 

任何人都有更好的方法來完成這個?

1

取觸發器「復位」事件的集合時導入完成。聆聽它,然後與模型一起燃燒/混亂。

相關問題