Как насчет того, чтобы связать все исходные модели Слова для сортировки по событию изменения, а затем связать то же самое по событию добавления в коллекцию?
_(self).models.each(model) { model.bind('change', self.sort) } // bind on the model add as well
Backbone.Collection.sort вызывает обновлениеИтак, просто:
this.bind('refresh', this.refresh)
Что касается вашего беспокойства по поводу эффективности, что вы подразумеваете под "весь список отсортирован по одному элементу?"Если у вас нет ТЫСЯЧИ элементов (и даже тогда, запустите некоторые тесты в различных браузерах, я уверен, что это будет чертовски быстро), это не должно иметь большого значения с современными браузерами / компьютерами
Если бы вы былидействительно обеспокоен этим, я думаю, вы можете использовать некоторые методы оптимизации для сортировки больших наборов.Например, отбросьте их в сегменты оценок (0-100, 100-500, 500-1000 и т. Д.), Затем сбросьте оценки в сегменте и выполняйте сортировку только в пределах корзины (фактический алгоритм сортировки выполняется для каждой реализации браузера, Backbone -или, скорее, подчеркивают, просто называет это).Вы можете гуглить по таким алгоритмам.Но это большая работа для небольшого выигрыша против увеличения сложности кода.
Опять же, вам понадобится много профилирования и сравнительного анализа, чтобы определить, действительно ли это того стоит.