2013-06-29 23 views
0

所以我有一个非常基本的骨干收集和模型。我目前没有视图,因为我通过自定义模板呈现了该集合。我想要做的是通过事件对集合进行排序(单击列标题)。事件设置一个新的比较器,然后在集合上触发.sort()方法。但是,当我在.sort()之后转储收集数据时,collect的顺序相同。我对骨干和集合很陌生,所以也许我错过了一些东西。这里是我的代码:动态排序在骨干收集不起作用

var TicketCollection = Backbone.Collection.extend({ 
    model : TicketModel, 

    initialize : function() { 

    }, 

    fetch : function(options) { 
     options = options ? options : {}; 

     var self = this; 

     $.ajax({ 
      url : "/getTickets", 
      data : {}, 
      method : "POST", 
      cache : false, 
      dataType : "json", 
      success : function(Json) { 
       self.reset(Json); 
      }, 
      complete : options.complete 
     }); 
    }, 

    render : function() { 
     var self = this; 

     Base.renderTemplate({el : $("#ticketListContainer"), Template : "ticketList", data : {tickets : this.toJSON()}}); 

     $("#ticketList").find("#tdHeadCompany").click(function() { 
      self.comparator = function(ticket) { 
       ticket.get("company"); 
      }; 
      self.sort(); 
      console.log(JSON.stringify(self.toJSON())); 
     }); 

    }, 

    comparator : function(ticket) { 
     return ticket.get("number"); 
    } 
}); 

中的console.log显示垃圾收集仍处于原始顺序,而不是被“公司”订购的点击公司头时,我想。有什么建议?谢谢!

+1

你在新函数中缺少一个'return'语句。 – Andrew

回答

0

而我在比较器功能中缺少return。谢谢你指出,安德鲁!