В моем приложении Backbone в моей коллекции у меня есть множество методов сортировки при рендеринге представлений на основе коллекции, в которой я в настоящее время использую глобальный набор переменных по маршруту (я делаю это с глобальным как другие действия добавляют в коллекцию, и я хочу, чтобы последний заказ использовался). Напримермагистральные маршруты - заказы и фильтрация
routes : {
"" : "index",
'/ordering/:order' : 'ordering'
},
ordering : function(theorder) {
ordering = theorder;
listView.render();
},
то на мой взгляд
if (typeof ordering === 'undefined') {
d = this.collection.ordered();
}
else if(ordering == 'owners') {
d = this.collection.owners();
}
_.each(d, function(model){
model.set({request : self.model.toJSON()});
var view = new TB_BB.OfferItemView({model : model});
els.push(view.render().el);
});
Где заказать и владельцы являются 2 способа заказа.
Итак, мой первый вопрос, основанный на маршрутах, может кто-нибудь посоветовать лучший способ реализации выше? Это представление визуализируется в нескольких местах, поэтому я использую глобальное, а не передавая метод var в метод?
Второй вопрос: я хотел бы также добавить фильтрацию, поэтому скажу, что хочу сортировать по «цене», а также выполнять некоторую фильтрацию (скажем, с помощью нескольких категорий id). Как я могу добавить гибкий «маршрут» для фильтрации.
Я предполагаю, что я мог бы сделать
routes : {
"" : "index",
'/ordering/:order/:filter1/:filter2' : 'ordering'
},
Так filter1 и filter2 будет последующая фильтрация, но если фильтры могут быть 0 или 100 это не будет работать. Может ли кто-нибудь предложить решение?
Спасибо большое, Джош, компаратор, похоже, делает именно то, что мне нужно! как и фильтрация! – Xrender