Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
backbone.js:更新模型、重新排序和重新渲染模型集合_Backbone.js_Socket.io - Fatal编程技术网

backbone.js:更新模型、重新排序和重新渲染模型集合

backbone.js:更新模型、重新排序和重新渲染模型集合,backbone.js,socket.io,Backbone.js,Socket.io,在我的应用程序中,我有一个socket.io连接,它正在侦听后端并获取客户端浏览器持有的模型的更新(该浏览器通过id检索模型,并在模型属性上调用set) 我希望对集合进行排序,然后作为一个整体重新渲染,以反映由于集(大多数示例似乎围绕重新渲染的各个视图)而在模型上产生的任何新顺序。实现这一目标的方法是什么 铌 我从示例todo应用程序(这是第一个主干应用程序)中获得了一个非常详细的backbone.js布局。您可以通过提供收集方法来实现所需 示例: ModelCollection = Backb

在我的应用程序中,我有一个socket.io连接,它正在侦听后端并获取客户端浏览器持有的模型的更新(该浏览器通过id检索模型,并在模型属性上调用
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());
    }
});