2013年7月18日木曜日

Backbone.Collection の並び順を指定する

Backbone.Collection 内の model は comparator を指定することで任意の並び順に変更できます。

Backbone.Collection は Backbone.Model を複数入れておくことができるものです。
var People = Backbone.Model.extend({
});

var Peoples = Backbone.Collection.extend({
    model: People
});

var okano = new People({'name': 'okano'});
var tanaka = new People({'name': 'tanaka'});
var abe = new People({'name': 'abe'});

var peoples = new Peoples();
peoples.add([okano, tanaka, abe]);

console.log(peoples.toJSON()); // [ { name: "okano" }, { name: "tanaka" }, {name: "abe"} ]


Collection 内で comparator メソッドを定義することで並び替え方法を指定出来ます。
comparator メソッドは Collection 内の各 Model を引数として繰り返し呼び出されます。
comparator が返した値(文字列 or 数値)の大小(前後)によって並び順が決まります。
以下の例では、名前の昇順に並び替えています。
var People = Backbone.Model.extend({
});

var Peoples = Backbone.Collection.extend({
    model: People,
    comparator: function(people) {
        return people.get('name');  // 名前で並び替える
    }
});

var okano = new People({'name': 'okano'});
var tanaka = new People({'name': 'tanaka'});
var abe = new People({'name': 'abe'});

var peoples = new Peoples();
peoples.add([okano, tanaka, abe]);

console.log(peoples.toJSON()); // [ { name: "abe" }, { name: "okano" }, {name: 'tanaka'} ]


0 件のコメント:

コメントを投稿