我应该如何处理 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;
}
});
我认为这是第一种情况——考虑到主干是事件驱动的,但第二种情况显然有更少的代码。
另外,我想第三种情况是将视图代码保留在第一种情况中,但抓住第二种情况的路由器情况......在导航上渲染视图,但如果我想在其他地方触发它,则公开一个事件。
想法?