Ember.js 使用HistoryLocation从不匹配的路由转换用户
随着HistoryLocation在1.5.1中的新实现,rootURL参数现在需要一个尾部斜杠。这现在给那些试图访问应用程序而不使用尾随斜杠的用户带来了问题,因为ember认为它找不到路由 例如,我的应用程序位于Ember.js 使用HistoryLocation从不匹配的路由转换用户,ember.js,Ember.js,随着HistoryLocation在1.5.1中的新实现,rootURL参数现在需要一个尾部斜杠。这现在给那些试图访问应用程序而不使用尾随斜杠的用户带来了问题,因为ember认为它找不到路由 例如,我的应用程序位于/path/to/app,这是现有用户已添加书签的内容,默认情况下是从我们的服务器端框架链接的(该框架创建应用程序内带有修剪后斜杠的URL) 有没有办法 1.HistoryLocation根URL中不允许有尾随斜杠 2.在尝试访问应用程序时,是否在不带尾随斜杠的情况下转换使用路由器的用
/path/to/app
,这是现有用户已添加书签的内容,默认情况下是从我们的服务器端框架链接的(该框架创建应用程序内带有修剪后斜杠的URL)
有没有办法
1.HistoryLocation根URL中不允许有尾随斜杠
2.在尝试访问应用程序时,是否在不带尾随斜杠的情况下转换使用路由器的用户
在我的服务器上,我有一个window.rootURL,其中的应用程序根URL没有一个尾随斜杠(有基于访问的资源的动态段)。
在我的路由器中,我有以下功能:
App.Router.reopen({
location: 'auto',
rootURL: window.rootURL + '/'
});
我可以像这样跑
if (location.pathName == window.rootURL) {
window.location.assign(window.rootURL + '/');
}
但这将迫使重新加载页面,因为我已经有一个完整的余烬应用程序在运行,所以似乎不需要重新加载页面
由于此应用程序与代码库中的几个余烬应用程序共享组件,并且rootURL中有动态段,因此创建重定向路由没有多大意义(至少在IMO中是这样)
那么,这个问题的最佳解决方案是什么呢?不用多想,您可以使用
replaceState
,它不会重新加载页面,但会更新url以点击您的余烬应用程序
window.history.replaceState({},"", pathWithSlash);
将
null
作为第一个参数传递看起来更加明确