使用HistoryLocation从不匹配的路径转换用户

时间:2014-04-30 17:06:42

标签: ember.js

使用1.5.1中的HistoryLocation的新实现,rootURL参数现在需要一个尾部斜杠。对于试图访问应用程序但没有尾部斜杠的用户而言,这会导致问题,因为ember认为它无法找到路径。

例如,我的应用程序位于/path/to/app,这是现有用户已添加书签并默认链接到我们的服务器端框架(在应用程序网址中创建带有修剪后的斜杠)。

有没有办法,

1.在HistoryLocation rootURL中不允许使用斜杠 2.在尝试访问应用程序时使用路由器转换用户而没有斜杠?

从我的服务器,我有一个window.rootURL,应用程序根URL没有斜杠(有基于访问资源的动态段)。 在我的路由器中,我有以下内容:

App.Router.reopen({
    location: 'auto',
    rootURL: window.rootURL + '/'
});

我可以运行像

这样的东西
if (location.pathName == window.rootURL) {
    window.location.assign(window.rootURL + '/');
}

但这会强制重新加载页面,因为我已经有一个完整的Ember应用程序运行,所以似乎不需要它。

  

由于此应用程序与我们的代码库中的一些Ember应用程序共享组件,并且rootURL中存在动态段,因此创建仅重定向的路由没有多大意义(至少是IMO)。

那么,这个问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:1)

如果不加思索,可以使用不会重新加载页面的replaceState,但会更新网址以点击您的余烬应用。

window.history.replaceState({},"", pathWithSlash);