次を使用して、時間通りに並べ替えを逆にしたいメッセージの単純なコレクションがあります(最新のものを上に)comparator
:
...
this.comparator = function(message) {
var time = new Date(message.get("time")).getTime();
return time;
}
...
私の見解では、次のイベントを使用fetch
します。add
messages = new MessageCollection();
messages.fetch({update: true});
messages.on("add", this.appendMessage);
...
appendMessage: function(message) {
var messageView = new MessageView({
model: message
});
this.$el.prepend(messageView.render().el);
}
悲しいことに、メッセージは私が探している順序ではレンダリングされませんが、サーバーから送信された元の順序でレンダリングされます。
reset
さて、いくつかのテストの後、( を使用して) すべてのメッセージを一度に追加すると、順序が期待どおりであることがわかりました。
messages.fetch();
messages.on("reset", this.appendCollection);
...
appendCollection: function(messages) {
messages.each(function(message) {
this.appendMessage(message);
}, this);
}
コレクションはおそらく、すべてのモデルが追加された後にソートされるはずの方法しか理解できないため、このプロセスは理解できますが、これ (on("add")
構成) は Backbone 0.9.2 で機能していました。
何か不足していますか?比較方法が変わったのか、それともイベントモデルが変わったのadd
か? それとも、間違った方法で進んでいますか?ありがとう!