1

Backbone.Collection オブジェクトはUnderscore のCollection.shuffle()オブジェクトをプロキシするため、すべての Backbone コレクションにはメソッドがありshuffle()ます。

アンダースコアのシャッフルは正常に動作します: -

アンダースコア コレクションの最後の 5 項目のみをシャッフルしたい場合は、次のように実行できますslice()

-

バックボーン コレクションをスライスしてシャッフルすることもできます。

-

しかし、データベースからアイテムを複数回 es するバックボーン コレクションの場合、最後の呼び出しでfetchフェッチされたアイテムだけをシャッフルすることはできないようです。fetchスライスシャッフル。

a.models  // say, [id:1, id:2, id:3]
a.fetch().done(function (data) {
    return data = _.shuffle(data)
})
a.models  // [id:1, id:2, id:3, id:4, id:5, id:6], still sorted

遅延オブジェクト内でソートしても、外側のコレクションはまったく変更されないようです。

nでは、バックボーン コレクションの最後にあるアイテムだけを並べ替えるにはどうすればよいでしょうか?

4

2 に答える 2

0

ランダム化コンパレータを使用して、アイテムがコレクションに追加されるときにアイテムをシャッフルできます。

comparator: function(a) {
  var rand = _.random(0, 1000);
  a.set({rand: rand});
  return rand;
}

フィドル: http://jsfiddle.net/pYyRp/

于 2013-10-30T20:58:57.630 に答える