2013-05-14 163 views
0

我最近希望我的emberjs應用中的一些路由不會顯示在瀏覽器歷史記錄中,並試圖利用RC1中引入的replaceRoute功能。不幸的是,如果我使用transitionToRoute或replaceRoute,它根本沒有任何區別。 假設我有3頁,並且我希望回到歷史頁面時跳過頁面1。replaceRoute不按預期工作?

App = Ember.Application.create({}); 

App.ApplicationRoute = Ember.Route.extend({ 
    events: {goBack:function(){window.history.back();}} 
}); 

App.Page1Controller = Ember.Controller.extend({ 
    goToPage2: function(){ 
    this.replaceRoute("page2") 
    } 
}); 

App.Router.map(function() { 
    this.route("page1"); 
    this.route("page2"); 
    this.route("page3"); 
}); 

我做了一個小的jsfiddle例如,對於我使用的replaceRoute完全錯誤的測試http://jsfiddle.net/ripcurlx/Qmnrj/3/

,或者是有一個更好的解決方案,以防止某些路線不被包括在瀏覽器歷史記錄? 感謝您的任何提示!

+0

它看起來像這隻適用於如果你使用位置:「歷史」而不是位置:「哈希」。我會看看是否能夠以某種方式爲Ember.HashLocation實現它。 – ripcurlx 2013-05-15 07:55:57

回答

0

不幸的是,這隻適用於location: "history"。瀏覽器不支持在不影響歷史的情況下更新散列,而在使用歷史狀態時,我們可以使用提供的replaceState方法。

+0

無論如何感謝!在閱讀了History和HashLocation的實現之後,我想通過跳回歷史記錄並設置哈希URL來擴展此功能。但不知何故,它總是導致手機閃爍。無論如何,我最終實現了一個自定義歷史記錄控制器來處理應用程序中的後退按鈕行爲。 – ripcurlx 2013-05-27 07:55:29