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、コンパレータ関数に a がありませんでした。それを指摘してくれてありがとう、アンドリュー!

于 2013-06-29T16:59:23.227 に答える