我知道有大量關於使用Backbone.js組織應用程序的教程/信息。我正在藉助這些教程逐步創建一個。我似乎無法理解路由器的概念。那麼,我知道路由器是起點(並告訴應用程序的狀態),最好避免在那裏放置更多的邏輯。Backbone中視圖內的呼叫路由
我有一個路由器。我的應用程序會首先加載頁眉,頁腳和頁面的主要部分。在主要部分,首先,我應該登錄用戶。要加載登錄頁面,我會這樣做:
var AppRouter = Backbone.Router.extend({
initialize : function() {
var headerView = new HeaderView({el:$('#header')});
headerView.render;
var footerView = new FooterView({el:$('#footer')});
footerView.render;
var loginView = new LoginView({el:$('#login')});
loginView.render;
},
routes : {
"inbox" : "inbox",
"sentbox : "sentbox"
},
inbox : function() {
// ...
},
sentbox : function() {
// ...
}
});
app = new AppRouter();
Backbone.history.start();
成功登錄後,郵件頁面將被加載。 MailView有一些事件可顯示收件箱,例如發件箱。
events: {
"click .inbox": "showInbox",
"click .sentbox": "showSentbox",
},
showInbox : function() {
// app.route() or app.inbox() - ?
}
在這一點上,我希望路由器分別顯示../#inbox
和../#sentbox
。我想知道是否應該在這裏調用路由器的一種方法來顯示地址欄中的內容。我爲什麼會感到困惑是因爲它說使用一臺路由器比另一臺路由器更好。如果我這樣做,我的AppRouter
會更加複雜。另一個問題是,如果用戶直接輸入地址,我應該加載該頁面。我認爲它需要把邏輯放在AppRouter之內。
請在這裏告訴我正確的方法。事先感謝!
請注意,如果您的路由器無法從您的視圖訪問,您也可以調用'Backbone.history.navigate'。 – jgillich 2014-01-30 08:44:50
好點 - 這可能是一個更好的選擇 – 2014-01-30 15:36:43
這隻會改變網址哈希並且不會觸發路由的處理方法 – skaterdav85 2015-05-06 23:04:55