0

実行時にバックボーン コレクションでコンパレータ関数を設定および設定解除しています。コレクションを元の挿入順序に「リセット」する方法があるかどうかを知りたいです。例えば...

var Mod = Backbone.Model.extend({});
var Col = Backbone.Collection.extend({ model: Mod });
var col = new Col([
    { name: "andy" },
    { name: "chad" },
    { name: "ashley" },
    { name: "louis" }
]);

col.comparator = function(p1, p2) {
    return p1.get('name') < p2.get('name') ? -1
        : (p1.get('name') > p2.get('name') ? 1 : 0 );
}
col.sort();

col.comparator = false;

// throws, was hoping this would return 
// the collection to insertion order
col.sort();

sortByここで設定しているコンパレータ関数は実装に置き換えられる可能性があるという事実を無視してください。これは単なる例です。バックボーンのソースから、コンパレータを使用せずにコレクションをソートしようとすると、次のようにスローされることは明らかです。

// ... from BB source ...
sort: function(options) {
    if (!this.comparator) throw new Error('Cannot sort a set without a comparator');
    // ...

コレクションの順番を掲載順に戻す方法はありますか?

4

2 に答える 2

0

オリジナルをコレクションに保存できます。何かのようなもの:

col.originalComp = col.comparator;
col.comparator = function(){};
...Do Stuff ...
col.comparator = col.originalComp; //Back to original
于 2013-04-02T04:02:55.310 に答える