2012-07-04 34 views
5

Thông thường, tôi cần lặp qua nội dung của đối tượng Ember.ArrayProxy.Emberjs: cách tốt nhất để lặp qua nội dung ArrayProxy?

dụ 1, tôi cần phải xây dựng một danh sách các ID:

var loc = myArrayProxy.get('length') || 0, 
    ids = new Array(), 
    idsList; 

while(--loc >= 0) { 
    var curObject = myArrayProxy.objectAt(loc); 
    ids.push(curObject.id); 
} 
idsList = ids.join(','); 

dụ 2, tôi cần phải xây dựng một mảng của các đối tượng nguyên thủy (không Ember.Object):

var loc = myArrayProxy.get('length') || 0, 
    newContent = new Array(); 

while(--loc >= 0) { 
    var curObject = myArrayProxy.objectAt(loc); 
    newContent.push({ 
         id: curObject.id, 
         name: curObject.name 
        }); 
} 

Câu hỏi: có cách nào tốt hơn để thực hiện việc này không? "While (- loc> = 0)" có vẻ xấu với tôi.

+0

Bây giờ sử dụng "getEach() "và" forEach() ". Các tài liệu thực sự thiếu ví dụ ... Cảm ơn :) –

Trả lời

8

Ember.ArrayProxy cung cấp nhiều chức năng thân thiện (thông qua Ember.Array, Ember.Enumerable, ...). Vòng lặp thường có thể tránh được bằng cách sử dụng "forEach". Trong ví dụ thứ 2 của bạn, bạn có thể xem xét sử dụng "bản đồ". Đây là liên kết đến Ember.ArrayProxy documentation. Hãy chắc chắn để xem xét: Ember.ArrayEmber.Enumerable

chỉnh sửa:

Ví dụ, giả sử thứ tự của các id không có liên quan, ví dụ đầu tiên của bạn có thể được viết:

var idsList = myArrayProxy.mapProperty('id').join(','); 
Các vấn đề liên quan