0

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

    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 显示该集合仍处于其原始顺序,并且在单击公司标题时没有像我希望的那样由“公司”订购。有什么建议吗?谢谢!

4

1 回答 1

0

而且我的比较器功能中缺少一个return。感谢您指出这一点,安德鲁!

于 2013-06-29T16:59:23.227 回答