KonifarPod

Backbone.jsでcollectionにソート順にaddさせる

      2013/12/01

Pocket

Bacobone.jsを使ってCollectionに新しいModelをaddすると、一番最後に追加されます。unshiftすると最初に追加されます。

例えば名前順に入ったCollections.Usersに新しいModels.Userを追加する場合、ソート順を保った状態でaddしたい場合があります。そんな時は、Collectionクラスにcomparatorというプロパティを持たせると簡単に実装できます。

[coffeescript]

class padule.Collections.Users extends Backbone.Collection
  model: padule.Models.User
  url: '/users'
  # name でソートする
  comparator: (user)->
    user.get ’name'
  # この書き方でも良い
  # comparator: ’name'

 

</p>
1
var padule.Collections.Users = Backbone.Collection.extend({
  model: padule.Models.User
  url: ‘/users'
  // name でソートする
  comparator: function(user) {
    return user.get(’name’);
  };
});

 

こう書いておくと、addする時にcomparatorの定義にしたがってソートしてくれます。ソート順を変えたい時も、comparatorを入れ替えるだけで実装できるので良い感じです。

Pocket

 - Develop ,