3

ID を使用してコレクションから単一のモデルを取得するには、呼び出すことができます

var myObject = myCollection.get(id)

取得したいいくつかのモデルの ID のリストがある場合、ID ごとに個別に .get() を呼び出すよりも、コレクションからそれらを取得するより良い方法はありますか?

次のコード スニペットはジョブを実行しますが、コレクションへの要求が多いため、少し乱雑に見えます。

var idList = new Array(34, 86, 167, 413);
var models = new Array();
for (var i = 0; i < idList.length; ++i) {
  models.push(myCollection.get(idList[i]));
}

ありがとう
- ベン

4

2 に答える 2

5

実際にはまったく面倒ではなく、get on コレクションを 4 回しか呼び出していません。Backbone で一度に複数の ID を「取得」できたとしても、バックエンドではほぼ同じ量の作業が行われます。

見やすくするために少し書き直すこともできますが、それは個人的な好みです。おそらく、配列の代替形式と for ループ表記を使用して、このようなことを行うでしょう。

var ids = [34, 86, 167, 413];
var selected = [];
for (var i in ids)
    selected.push(myCollection.get(ids[i]));

頻繁に行う予定で、さらにきれいに見せたい場合は、フィルターを使用して、mu のように小さなコレクションを返すことができます。

filterBy: function(attribute, value) {
    var filtered = this.filter(function(items) {
        return _.contains(value, items.get(attribute));
    });
    return new myCollection(filtered);
}

var newFilteredCollection = myCollection.filterBy('id', [34, 86, 167, 413]);
于 2013-11-10T14:33:31.690 に答える