我有,我想在時間排序顛倒消息的簡單集合(最新的放在上面),使用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")
配置)用於骨幹0.9.2工作。
我錯過了什麼嗎?比較方法是否改變了,或者是關於add
的事件模型?還是我以錯誤的方式去做?謝謝!
也許我失去了一些東西,但你調用'appendMessage'方法,當你在集合添加一個模型。 appendMessage是按照添加模型的順序調用的,而不是集合中的實際順序..沒有? – neebz 2013-02-22 12:44:19
是的,我認爲你是對的,這也是Tallmaris所說的(下面)。如果您發佈的評論作爲一個答案,我會檢查它作爲公認的答案 – Phortuin 2013-02-22 14:11:23
你可以讓你收集逆序排序後通過這樣做:http://stackoverflow.com/questions/5013819/reverse-sort-order- with-backbone-js /#21434708 – Fasani 2014-01-29 15:06:44