backbone.js:更新模型、重新排序和重新渲染模型集合
在我的应用程序中,我有一个socket.io连接,它正在侦听后端并获取客户端浏览器持有的模型的更新(该浏览器通过id检索模型,并在模型属性上调用backbone.js:更新模型、重新排序和重新渲染模型集合,backbone.js,socket.io,Backbone.js,Socket.io,在我的应用程序中,我有一个socket.io连接,它正在侦听后端并获取客户端浏览器持有的模型的更新(该浏览器通过id检索模型,并在模型属性上调用set) 我希望对集合进行排序,然后作为一个整体重新渲染,以反映由于集(大多数示例似乎围绕重新渲染的各个视图)而在模型上产生的任何新顺序。实现这一目标的方法是什么 铌 我从示例todo应用程序(这是第一个主干应用程序)中获得了一个非常详细的backbone.js布局。您可以通过提供收集方法来实现所需 示例: ModelCollection = Backb
set
)
我希望对集合进行排序,然后作为一个整体重新渲染,以反映由于集
(大多数示例似乎围绕重新渲染的各个视图)而在模型上产生的任何新顺序。实现这一目标的方法是什么
铌
我从示例todo应用程序(这是第一个主干应用程序)中获得了一个非常详细的backbone.js布局。您可以通过提供收集方法来实现所需 示例:
ModelCollection = Backbone.Collection.extend({
comparator: function(a, b) {
if ( a.get("name") > b.get("name") ) return 1;
if ( a.get("name") < b.get("name") ) return -1;
if ( a.get("name") === b.get("name") ) return 0;
},
initialize: function() {
this.on('change:name', function() { this.sort() }, this);
}
});
就这样:)
有关摘录自: 默认情况下,集合没有
比较器。如果定义一个比较器
,它将用于按排序顺序维护集合。这意味着在添加模型时,它们会插入到集合.models
中的正确索引处。比较器可以定义为sortBy
(传递接受单个参数的函数)、sort
(传递需要两个参数的比较器函数)或指示排序依据的属性的字符串[…]如果您以后更改模型属性,则带有比较器的集合将不会自动重新排序,因此您可能希望在更改会影响顺序的模型属性后调用sort
CollectionView = Backbone.View.extend({
initialize: function() {
this.collection = new ModelCollection();
this.collection.on('all', function() { this.render() }, this);
},
render: function() {
this.$el.html(this.collection.toJSON());
}
});