触发Backbone.js集合过滤器的最佳方法

时间:2011-08-01 08:12:28

标签: javascript backbone.js

大家好我正在创建我的第一个Backbone.js应用程序。它基本上是一个在表中呈现数据的集合。我想要做的是能够过滤和排序数据。 最好的方法是什么?我应该使用路由器还是存储一些会考虑渲染的参数。

我认为路由器将很快变得非常复杂,因为我将有3-4个过滤器和1个订单选项。

您怎么看?

2 个答案:

答案 0 :(得分:1)

在我的基于骨干的项目中,我已经将Backbone.Collection子类化,以允许Controller向其添加任意GET参数。

以下是您的代码:

RailsCollection = Backbone.Collection.extend({
  initialize: function() {
    _.bindAll(this, 'url');
  },

  url: function() {
    var base = this.baseUrl || this.model.prototype.baseUrl;

    if(!this.params) {
      return base;
    } else {
      return base + '?' + $.param(this.params);
    }
  }
});

答案 1 :(得分:0)

我会在我的集合中添加用于过滤和排序的方法,并使用视图来呈现可能被过滤或排序的任意集合。

对于订购,有一个内置的钩子:http://documentcloud.github.com/backbone/#Collection-comparator

对于过滤,请查看集合中的下划线帮助器方法,并使用您自己的方法进行扩展。

例如,你可以有一个collection.doFiltering([filter1,filter2,filter3]); 返回一个已过滤的数组。