骨干集合中的动态排序不起作用

时间:2013-06-29 15:47:06

标签: backbone.js backbone.js-collections

所以我有一个非常基本的骨干集合和模型。我目前没有视图,因为我通过自定义模板渲染集合。我想要做的是通过一个事件(点击一个列标题)对集合进行排序。该事件设置一个新的比较器,然后触发该集合上的.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 个答案:

答案 0 :(得分:0)

我在比较器功能中错过了return。谢谢你指出这一点,安德鲁!