我正在處理基於身份驗證的應用程序,其中用戶必須登錄才能訪問網站的某些路由。我還沒有找到關於如何完成這個任務的文檔,所以我就如何解決這個問題開展了一個想法。觸發阻止執行默認代碼的事件
這是我的職責知道如果用戶登錄或不:
App.filterAuth = function(navigateTo) {
navigateTo = typeof navigateTo !== 'undefined' ? navigateTo : '#';
if (App.logged == false) {
App.vent.trigger('navigate', navigateTo);
}
};
我的想法是,當用戶登錄套App.logged = true
。然後,當我的路由器試圖執行一個具體的路由器時,我可以撥打App.filterAuth()
。這實際上工作,並做一些調試,我看到一切都被觸發糾正。
問題?例如,我在受保護的路線上執行此操作,爲用戶加載圖像的源。當執行App.filterAuth()
時,我發現它試圖導航到#
,但此訂閱源視圖的執行未停止,並且與我的#
路由關聯的視圖也未觸發。
有關如何改進此功能使其正常工作的任何想法?
在此先感謝!
你的意思是這個url只會在沒有任何路由的情況下導航到'example.com /#'?你是否使用'event.preventDefault()'來阻止任何傳播? – dbf
@dbf:謝謝!不,我沒有使用'event.preventDefault()',因爲我不知道我的功能在哪裏。任何建議? – udexter
爲什麼不在你現有的路由器上設置'App.logged'或者設置路由時創建一個單獨的'Backbone.Router'並實例化它? – fbynite