我正在使用Backbone.js来呈现项目列表,例如Books.呈现列表后,用户可以选择对它们进行排序.因此,如果用户单击"按标题排序"或"按作者名称排序",则列表将在客户端进行排序.
window.Book = Backbone.Model.extend({
defaults: {
title: "This is the title",
author: "Name here"
},
Run Code Online (Sandbox Code Playgroud)
在Backbone应用程序的上下文中使用什么是完成此类排序的最佳方法.我在AppView中使用jQuery dom分拣机吗?
sat*_*run 50
有一个关于这个话题的讨论你可能想看一下:https://github.com/documentcloud/backbone/issues/41.
缺点是,当用户选择"按X排序"时,您可以:
comparator在Collection上设置功能sort函数(将触发sort事件)sort在视图中监听事件,并(清除)重绘项目处理步骤1和2的另一种方法是使用自己的方法调用Collection的sortBy方法,然后触发View可以侦听的自定义事件.
但似乎清理和重绘是最简单(甚至可能是最快)的方式来排序View并使它们与Collection的排序顺序保持同步.
小智 48
您可以更新比较器功能,然后调用sort方法.
// update comparator function
collection.comparator = function(model) {
return model.get('name');
}
// call the sort method
collection.sort();
Run Code Online (Sandbox Code Playgroud)
视图将自动重新渲染.
Nic*_*ilt 12
comparator 是你需要的
var PhotoCollection = Backbone.Collection.extend({
model: Photo,
comparator: function(item) {
return item.get('pid');
}
});
Run Code Online (Sandbox Code Playgroud)