テキスト入力でデータをフィルターする機能を実装するのに、Backbone.Collection#whereを使って実装してみるメモ。
// ------------ Model/Collection 定義
var Message = Backbone.Model.extend({
  id: 'msg_id',
  // 属性はこんなの
  defaults: {
    sender: 'anonymous',
    text: '',
    createdAt: new Date()
  }
});
var Messages = Backbone.Collection.extend({
    url: '/api/v1/messages',
    model: Message,
    // 大文字小文字無視してデータを検索する
    whereSender: function(name) {
      var senders = _.uniq(this.pluck('sender')),
          exp = new RegExp($.trim(name), 'i'),
          fName = _.find(senders, function(n) { return n.match(exp); });
      return this.where({sender: fName});
    }
  });
// -------------- 使う方
// データのfetchとかしておく
var messages = new Messages();
messages.fetch();
[… snip …]
// clickやらkey event等が発生したら、フィルター用のテキスト入力を取得
var inputSender = $(':text').val();
// フィルターしたデータを再度Backbone.Collectionにする.
filterdMessages = new Message(messages.whereSender(inputSender));
[… snip …]