Как я должен обрабатывать маршрутизацию в BackboneJS? При маршрутизации, после обновления моего представления, должен ли я инициировать событие или отображать представление напрямую?
Вот два сценария:
Триггерное событие:
routes: {
'orders/view/:orderId' : 'viewOrder'
},
viewOrder: function (orderId) {
var viewOrderView = new ViewOrderView();
vent.trigger('order:show', orderId);
}
На мой взгляд, у меня есть:
var ViewOrderView = Backbone.View.extend({
el: "#page",
initialize: function () {
vent.on('order:show', this.show, this);
},
show: function (id) {
this.id = id;
this.render();
},
render: function () {
var template = viewOrderTemplate({ id: this.id });
this.$el.html(template);
return this;
}
});
ИЛИ, я должен пойти по этому пути:
routes: {
'orders/view/:orderId' : 'viewOrder'
},
viewOrder: function (orderId) {
var viewOrderView = new ViewOrderView({id : orderId });
viewOrderView.render();
}
На мой взгляд, у меня есть:
var ViewOrderView = Backbone.View.extend({
el: "#page",
initialize: function () {
//init code here
},
render: function () {
var template = viewOrderTemplate({ id : this.id});
this.$el.html(template);
return this;
}
});
Я думаю, что это первый сценарий, учитывая, что магистраль управляется событиями, но во втором явно меньше кода.
Кроме того, я полагаю, что третий сценарий будет состоять в том, чтобы сохранить код представления в первом сценарии, но захватить сценарий маршрутизатора второго... визуализация представления при навигации, но раскрытие события на случай, если я захочу вызвать это в другом месте.
Мысли?