【发布时间】:2011-08-01 08:12:27
【问题描述】:
大家好,我正在创建我的第一个 Backbone.js 应用程序。它基本上是一个在表格中呈现数据的集合。我想要做的是能够过滤和排序数据。 最好的方法是什么?我应该使用路由器还是存储一些渲染会考虑的参数。
我认为路由器很快就会变得非常复杂,因为我将拥有 3-4 个过滤器和 1 个订单选项。
你怎么看?
【问题讨论】:
大家好,我正在创建我的第一个 Backbone.js 应用程序。它基本上是一个在表格中呈现数据的集合。我想要做的是能够过滤和排序数据。 最好的方法是什么?我应该使用路由器还是存储一些渲染会考虑的参数。
我认为路由器很快就会变得非常复杂,因为我将拥有 3-4 个过滤器和 1 个订单选项。
你怎么看?
【问题讨论】:
在我基于主干的项目中,我对 Backbone.Collection 进行了子类化,以允许 Controller 向其添加任意 GET 参数。
这是一个给你的sn-p:
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);
}
}
});
【讨论】:
我会在我的集合上添加用于过滤和排序的方法,并使用视图来呈现任意集合,可能会被过滤或排序。
为了订购有一个内置的钩子:http://documentcloud.github.com/backbone/#Collection-comparator
对于过滤,请查看集合上的下划线辅助方法,并使用您自己的方法进行扩展。
例如,您可以有一个 collection.doFiltering([filter1, filter2, filter3]); 返回一个过滤后的数组。
【讨论】: