5

多くの場合、Ember.ArrayProxy オブジェクトのコンテンツをループする必要があります。

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

例 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)」は私には悪いようです。

4

1 に答える 1

8

Ember.ArrayProxy は、(Ember.Array、Ember.Enumerable などを通じて) 多くの使いやすい関数を提供します。多くの場合、「forEach」を使用してループを回避できます。2番目の例では、「マップ」の使用を検討できます。Ember.ArrayProxy ドキュメントへのリンクは次のとおりです。必ず見てください: Ember.ArrayEmber.Enumerable

編集:

たとえば、ID の順序が関係ないと仮定すると、最初の例は次のように記述できます。

var idsList = myArrayProxy.mapProperty('id').join(',');
于 2012-07-04T07:13:44.720 に答える