5

名前と日付が記載されたToDoリストがあります。タイトルまたは日付のいずれかを使用してリストを並べ替えることができるようにしたいと思います。どうすればいいですか?コンパレータでは、1種類の並べ替えのみが可能です。

ありがとう。

4

3 に答える 3

4

コンパレータにさらにロジックを実装して、ソートロジックの一部を抽象化することができます。

var Collection = Backbone.Collection.extend({

    model: myModel,
    order: 'name'

    comparator: function(model) {
        if (this.order === 'name') {
            return model.get('name');
        } else {
            return model.get('date'); //or modify date into a numeric value
        }
    }
});

次に、並べ替え方法を変更します。

myCollection.order = 'date';
myCollection.sort();

これにより、コンパレータ関数が呼び出され、このように並べ替えられます。

ビューでリゾートを聞くことができます:

this.listenTo(myCollection,'sort',this.render);

これには、モデルが追加されるたびにコンパレータが呼び出され、現在の設定を使用してソートされるという追加の利点があります。これは、ソート方法がコレクションに格納されているためです。

于 2013-04-11T23:45:22.427 に答える
3

あなたはここで答えを見る必要があるかもしれません、ここにその投稿で提供される解決策があります:

comparator: function(item) {
    return [item.get("level"), item.get("title")]
}
于 2013-02-14T13:46:27.100 に答える
1

私は方法を見つけたと思います:

collection.reset(collection.sortBy(function(item){
    return item.get(sortingFIeld);
}))

ここで、sortByは、リセットする引数として渡される、ソートされた新しい配列を返します。SortingFieldは、モデルの文字列プロパティです。

于 2012-08-08T18:38:19.567 に答える