2012-07-04 9 views
5

Często potrzebuję pętli przez zawartość obiektu Ember.ArrayProxy.Emberjs: najlepszy sposób na iterację poprzez zawartość ArrayProxy?

Exemple 1, muszę zbudować listę identyfikatorów:

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(','); 

Exemple 2, muszę zbudować tablicę prymitywnych obiektów (nie 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 
        }); 
} 

Pytanie: czy jest lepszy sposób na zrobienie tego? "While (- loc> = 0)" wydaje mi się złe.

+0

Teraz używając „getEach() "i" forEach() ". W dokumentacji naprawdę brakuje przykładów ... Dzięki :) –

Odpowiedz

8

Ember.ArrayProxy zapewnia wiele przyjaznych funkcji (poprzez Ember.Array, Ember.Enumerable, ...). Pętli często można uniknąć używając "forEach". W twoim drugim przykładzie możesz rozważyć użycie "mapy". Oto link do Ember.ArrayProxy documentation. Pamiętaj, aby spojrzeć na: Ember.Array i Ember.Enumerable

edit:

Na przykład, zakładając, że kolejność identyfikatorów nie jest istotne, pierwszym przykładem może być napisane:

var idsList = myArrayProxy.mapProperty('id').join(',');