2013-05-14 2 views
0

Недавно я хотел, чтобы некоторые маршруты в моем приложении emberjs не отображались в истории браузера и пытались использовать функциональность replaceRoute, которая была введена в RC1. К сожалению, это не имеет никакого значения, если я использую 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 пример для тестирования http://jsfiddle.net/ripcurlx/Qmnrj/3/

Могу ли я с помощью replaceRoute совершенно неправильно, или есть лучшее решение, чтобы предотвратить некоторые маршруты не должны быть включены в историю браузера? Спасибо за любые подсказки!

+0

Похоже, что это работает, только если вы используете местоположение: «история» вместо местоположения: «хэш». Я посмотрю, смогу ли я каким-либо образом реализовать его для Ember.HashLocation. – ripcurlx

ответ

0

К сожалению, это работает только с location: "history". Браузеры не поддерживают обновление хэша, не влияя на историю, тогда как при использовании состояний истории существует предоставленный нами метод replaceState, который мы можем использовать.

+0

Спасибо в любом случае! После ознакомления с реализацией History и HashLocation я подумал о расширении этой функциональности, перепрыгнув назад в историю и установив хэш-адрес впоследствии. Но почему-то это всегда приводило к некоторым мерцаниям на мобильных устройствах. В любом случае я оказался в реализации пользовательского контроллера истории для обработки поведения кнопки обратной связи в приложении. – ripcurlx

Смежные вопросы