BackboneJSでルーティングをどのように処理する必要がありますか?ルーティングするとき、ビューを新しくアップした後、イベントをトリガーする必要がありますか、それともビューを直接レンダリングする必要がありますか?
2つのシナリオは次のとおりです。
トリガーイベント:
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;
}
});
バックボーンがイベント駆動型であることを考えると、これが最初のシナリオだと思いますが、2番目のシナリオは明らかにコードが少なくなっています。
また、3番目のシナリオは最初のシナリオでビューコードを保持することだと思いますが、2番目のルーターシナリオを取得します...ナビゲーションでビューをレンダリングしますが、他の場所でトリガーしたい場合に備えてイベントを公開します。
考え?