2011-12-07 33 views
9

Vì vậy, tôi đang tìm hiểu về backbone.js và hiện đang lặp qua một số mô hình trong chế độ xem với ví dụ bên dưới. Đoạn mã đầu tiên hoạt động, khi đoạn mã khác dựa trên underscore.js thì không. Tại sao?Lặp lại các đối tượng với 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")); }); 

Tôi đang làm gì sai, vì bản thân tôi không thể nhìn thấy nó?

+2

Có * bất cứ điều gì * xảy ra không? Có lỗi trong bảng điều khiển không? – Pointy

+0

No. # 2 thực hiện âm thầm mà không cần bất kỳ đầu ra nào trên bàn điều khiển. – Industrial

Trả lời

22

this.collection là một ví dụ trong khi this.collection.each là phương pháp lặp lại đối tượng thích hợp trong các vỏ đó là thuộc tính .models của một thể hiện tập hợp.

Với điều này cho biết bạn có thể thử:

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

Đó là hoàn toàn vô nghĩa như this.collection.each là một chức năng nào tương tự như:

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

Vì vậy, bạn cũng có thể sử dụng this.collection.each; P

+1

Cảm ơn bạn đã giải thích lý do tại sao nó không hoạt động cùng với giải pháp! – Industrial

2

Ngoài ra, bạn có thể thử ...

_.each(this.collection.models, function(model){ 
    console.log(model.get("description")); 
}); 
Các vấn đề liên quan