有沒有辦法在backbone.js中觸發相同的位置路由,例如當位置是/My/App/#/About
,用戶再次點擊錨點時使用相同的路由來刷新頁面內容。觸發相同的位置路由
回答
Router.navigate('about', true);
這樣你就可以手動觸發一個路由。
假設你想要的不僅僅是關於頁,使用更做到這一點:
route = Backbone.history.fragment;
yourRouter.navigate(route, true);
使用骨幹0.9.2你傳遞一個選擇對象並設定「觸發」爲「真」。
router.navigate('some/route', { trigger : true });
參考:http://documentcloud.github.com/backbone/#Router-navigate
這不適用於重新加載當前路線。如果目標片段與當前片段匹配,則導航返回。 – DriverDan 2013-06-25 19:58:35
Backbone.history.loadUrl(Backbone.history.fragment);
爲您的特定問題的解決方案是不是真的記錄,並似乎建議的最佳做法是隻調用是你想要的路線聲明的功能火:/
編號:https://github.com/documentcloud/backbone/issues/1214
到目前爲止其他的答案是正確的,但他們忘了提,如果導航到的散列與當前的散列相同,沒有任何東西會觸發。
由於Backbone路由器查找要加載的URL片段中的更改,所以對我而言,工作原理是首先導航到「/」而不觸發,然後再導入到您想要使用的URL(片段)觸發。如果您願意,您可以很容易地將其構建到默認路由器行爲中。
例如
App.Routers.appRouter.navigate '/', {trigger: false}
App.Routers.appRouter.navigate myPath, {trigger: true}
感謝您的建議@eddywashere,真的很棒。我添加了一個小小的編輯器來檢查你是否在最後一個(最新的)URL上,如果是,加載這個歷史記錄。很簡單,認爲它可以幫助有同樣問題的人。
$("[data-href]").on("click", function(e) {
var href;
e.preventDefault();
href = $(e.currentTarget).data("href");
if ((_.last(this.history)) === href) {
return Backbone.history.loadUrl(_.last(this.history));
} else {
return this.router.navigate(href, true);
}
});
小心分享此常規JavaScript而不是coffeescript? – mix3d 2015-05-05 15:48:36
@ mix3d肯定。我編輯了原文。 – 2015-05-06 15:59:48
另一種選擇:你可以添加一個帶參數的隨機值,所以哈希將每個呼叫不同的,即使你調用同一個頁面。
router.navigate(route,{trigger:false}); //更改URL但不會觸發...例如:代替路由 - '約/ 1'或'約'等
Backbone.history.loadUrl(Backbone.history.fragment); //更改的路線將在此處觸發。
- 1. magento 1.4 - 有不同的子域路由到相同的位置
- 2. 如何在XAML中的特定位置觸發路由事件?
- 3. 由GPS位置觸發的Appinventor數據
- 4. rendr同構框架觸發路由
- 5. 觸發事件,當2個SpriteNode位於相同位置時
- 6. Angular 2路由到相同的路由
- 7. 骨幹路由器不觸發路由
- 8. Soundcloud事件一旦被觸發後加載相同的位置
- 9. Ext.ux.Router動態觸發路由
- 10. Backbone.js路由沒有觸發
- 11. 觸發同位素
- 12. 如何設置與父路由相同級別的嵌套路由路徑?
- 13. ASP.NET MVC4路由 - 到同一位置的多條路線
- 14. 相同組件的不同路由
- 15. Backbonejs獲得該觸發的路由
- 16. 從onRedelivery觸發新的onException路由
- 17. 是否有可能將.NET路由映射到與目錄相同的位置?
- 18. NGINX位置指令相同的位置
- 19. Angular2嵌套的模塊路由具有相同的路由
- 20. 相同模式不同路由
- 21. JQuery同位素不觸發
- 22. 路由表問題路由多個URL以相同的模式
- 23. 具有相同路由的NodeJS Express路由器?
- 24. 如何阻止Angular 2路由器追加相同的路由
- 25. React路由器 - 在路由上應用相同的Enter功能
- 26. symfony:路由總是在相同的路由
- 27. 燒瓶URL路由:路由幾個URL到相同的功能
- 28. 在與父路由器相同的路由器插座中使用子路由
- 29. 反應路由器路由不會觸發
- 30. on處理器路由範圍在路由中間觸發
現在過時:https://github.com/jashkenas/backbone/issues/1214 – hongymagic 2013-08-22 06:38:31