Лучший способ отсортировать коллекцию в CompositeView

Я пытаюсь отсортировать коллекцию в Marionette.CompositeView.
У меня есть коллекция, которая выглядит так:

[
   {id: 1, name: 'bar'},
   {id: 2, name: 'boo' },
   {id: 3, name: 'foo' }
]

Мне нужно отсортировать коллекцию по id в обратном порядке.
На самом деле это работает только тогда, когда я перезагружаю страницу.
Когда я добавляю новую модель, новый элемент добавляется в список случайным образом.
Если я обновлю страницу, они будут хорошо отсортированы.

Мои вопросы:
1 )как исправить проблему при добавлении новой модели?
2 )можно будет улучшить код?


Вот мой код:

return Marionette.CompositeView.extend({

    initialize: function () {
        this.collection.fetch();
    },

    onRender: function () {
        var collection =  this.collection;

        collection.comparator = function (collection) {
            return - collection.get('id');
        }
    },

    onSuccess: function () {
        this.collection.add(this.messageModel);
        this.collection.sort(); // the messageModel seems to be added 
                                // apparently randomly to the list. 
                                // only if I refresh the page it will be ok
    }
})
14
задан js999 25 July 2012 в 21:08
поделиться