2012-07-04 16 views
5

多くの場合、Ember.ArrayProxyオブジェクトのコンテンツをループする必要があります。Emberjs:ArrayProxyコンテンツを反復処理する最良の方法は?

Exemple 1は、私は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(','); 

Exemple 2、私はプリミティブオブジェクト(ない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 
        }); 
} 

質問:これを行うより良い方法はありますか? "while( - loc> = 0)"は私にとっては悪いようです。

+0

を今すぐ「getEachを使用して()」と「forEach()」を使用します。ドキュメントは実際には例が欠けています...ありがとう:) –

答えて

8

Ember.ArrayProxyは、(Ember.Array、Ember.Enumerable、...を介して)多くのフレンドリ関数を提供します。ループはしばしば "forEach"を使って避けることができます。 2番目の例では、 "map"の使用を検討することができます。 ここにEmber.ArrayProxy documentationへのリンクです。 Ember.ArrayEmber.Enumerable

編集: を見てください例えば

、IDの順序は関係ありませんと仮定すると、あなたの最初の例では、書くことができます。

var idsList = myArrayProxy.mapProperty('id').join(','); 
関連する問題