我應該如何在BackboneJS中處理路由?在添加視圖後,路由時,我應該觸發一個事件,還是直接渲染視圖?路由和事件 - 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;
}
});
我認爲這是第一種情景 - 考慮到骨幹網是事件驅動的,但第二個明顯具有更少的代碼。
另外,我想第三個場景是保持視圖代碼在第一個場景,但抓住第二個路由器場景...呈現導航視圖,但暴露事件,以防我想觸發在其他地方。
想法?
我認爲還有一件事要考慮的是「誰應該知道誰」。即路由器應該知道視圖,還是應該瞭解路由器(或者兩者都不知道)?在這種情況下,我會和路由器一起了解視圖,而不是相反,因爲路由器就像是一個「全局」對象「,視圖應該只與視圖相關的視圖和模型(也可能是子視圖)在場景(1)中,視圖必須知道由路由器觸發的事件,這是沒有意義的。在場景2中,路由器知道視圖,但視圖不知道路由器是否正確 – hajpoj
休息一年,沒有時間消費/測試和標記爲答案) –