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
Javascript 主干网中的比较器在添加新模型时需要sort调用?_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干网中的比较器在添加新模型时需要sort调用?

Javascript 主干网中的比较器在添加新模型时需要sort调用?,javascript,backbone.js,Javascript,Backbone.js,我在Backbone.Collection中定义了比较器 当我向该集合添加模型时,我应该调用sort方法吗 this.collection.add(this.newModel); this.collection.sort(); // should I add this line? 根据文档,没有,但我的应用程序似乎需要它。有什么想法吗 我添加了..但我有另一个问题..知道如何解决吗?不,从比较器函数返回对象时使用负号。这是对元素进行排序的另一种方法 //Model compar

我在Backbone.Collection中定义了比较器

当我向该集合添加模型时,我应该调用sort方法吗

this.collection.add(this.newModel);
this.collection.sort(); // should I add this line?
根据文档,没有,但我的应用程序似乎需要它。有什么想法吗



我添加了..但我有另一个问题..知道如何解决吗?

不,从比较器函数返回对象时使用负号。这是对元素进行排序的另一种方法

  //Model
     comparator: function(activity){

                var date = new Date(activity.get('created_at'));
                return -date.getTime();

            }

//View
 events : {
        'click .refresh' : 'refresh',
        'click .reverse' : 'reverse'
    },

    refresh : function() {

     this.collection.fetch();
    console.log('refresh', this.collection);
     this.render();

    },

    reverse : function() {

        var $ref = $(".notifyRefresh");

        console.log("you clicked reverse");

        console.log(this.collection, "collection");

        this.collection.sort();
    }

不需要调用
sort()
,每个集合插入都使用
comparator()
方法

检查


你的问题应该在其他地方。

你能在JSFIDLE中重现这个问题吗?@fguillen我补充道。但我还有一个问题……你知道如何解决吗?你使用的是旧的时尚主干版本。检查它是否按预期工作。我已经在使用负号了。事实上,当我第一次获取集合时,数据被排序。但是当我尝试添加模型时,我遇到了问题。如果我调用sort方法,它会工作!!是的,那么您必须调用.sort()。我是在我的视图中这样做的。但是,只有当您在现有模型上设置属性时,才需要根据文档排序!我补充道……但我还有一个问题……你知道怎么解决吗?是的,你肯定是对的。现在我需要找出问题所在。知道如何找到它吗?试着用尽可能少的代码重现这个问题,并在JSFIDLE中复制它。这是我们能帮助你的唯一方法。