2011-12-07 100 views
9

所以,我正在學習backbone.js,並且正在使用下面的示例在視圖中的某些模型上進行迭代。第一個代碼段可以工作,但其他基於underscore.js的代碼不會。爲什麼?使用underscore.js迭代對象

// 1: Working 
this.collection.each(function(model){ console.log(model.get("description")); }); 

// 2: Not working  
_.each(this.collection, function(model){ console.log(model.get("description")); }); 

我做錯了什麼,因爲我自己看不到它?

+2

是否有*發生?控制檯中是否有錯誤? – Pointy

+0

編號#2靜默執行,沒有任何輸出到控制檯。 – Industrial

回答

22

this.collection是一個實例,而this.collection.each是一個迭代集合實例的.models屬性下的適當對象的方法。

與此說,你可以嘗試:

_.each(this.collection.models, function(model){ console.log(model.get("description")); }); 

這是因爲this.collection.each完全沒有意義的是,做類似的功能:

function(){ 
return _.each.apply(_, [this.models].concat([].slice.call(arguments))); 
} 

所以你還不如用this.collection.each,P

+1

感謝您解釋爲什麼它沒有與解決方案一起工作! – Industrial

2

另外,您可以嘗試...

_.each(this.collection.models, function(model){ 
    console.log(model.get("description")); 
});