javascript - Backbone 集合 sortBy

标签 javascript backbone.js underscore.js

我制作了我的第一个主干应用程序,但在集合排序方面遇到了一些问题。 使用后

var SortedFriends = MyFriends.sortBy(function(friend) {
          return friend.get("uid");
        });  

console.log(SortedFriends) 显示 SortedFriends 包含排序模型,但是当我尝试使用像“SortedFriends.each”或“SortedFriends.at”这​​样的集合函数时,它会出错:

TypeError:SortedFriends.each 不是函数。

代码:

  var Friend = Backbone.Model.extend({});          
      var Friends = Backbone.Collection.extend({
        model: Friend,            
      });  

      var MyFriends = new Friends();
      MyFriends.reset(<?=$friends?>);

      var FriendView = Backbone.View.extend({
          initialize: function(){
              model:Friend            
          },              
          tagName: "tr",
          template: _.template($('#item-template').html()),
          className: "document-row",          
          render: function() {                              

         this.$el.html(this.template(this.model.toJSON()));                            
              return this;             
          }          
      });     


    var SortedFriends = MyFriends.sortBy(function(friend) {
      return friend.get("uid");
    });          

    var addOne = function(element){           
        var view = new FriendView({model: element});
        $("#friends").append(view.render().el);
    }                              
    console.log(JSON.stringify(SortedFriends));
    SortedFriends.each(function(friend){
        var view = new FriendView({model: friend});
        $("#friends").append(view.render().el);            
    });

最佳答案

如果您正在使用 Backbone 集合,那么您最好使用比较器而不是集合方法

http://backbonejs.org/#Collection-comparator

当您准备好对您的收藏进行分类时:

MyFriends.comparator = function(friend){
   return friend.get("uid");
});
MyFriends.sort();

或者如果你想保持未排序集合的顺序,那么你需要先克隆它

http://backbonejs.org/#Collection-clone

var SortedFriends = MyFriends.clone();
SortedFriends.comparator = function(friend){
   return friend.get("uid");
});
SortedFriends.sort();

关于javascript - Backbone 集合 sortBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010714/

相关文章:

backbone.js - 测试事件是否绑定(bind)到 backbone.js View ?

javascript - 如何使用 underscore.js 找到数组中对象的索引?

javascript - 使用包含字母和数字的名称属性对对象数组进行排序

javascript - 通过 JavaScript 解析查询参数

javascript - 如何获取带有集合和模型 ID 的 URL

javascript - 如何将组件从数组传递到路由react-router-dom( typescript )

javascript - 迭代 Backbone 模型的属性并将它们传递给函数

javascript - 使用下划线 sortBy 进行对象排序的数组

javascript - 使用jQuery比较服务器时间和当前时间

javascript - 自定义 element.prototype 函数未定义 "this"