У маршрутизатора Ember есть свойство rootURL
. Если вы хотите обслуживать приложение для ведения блога из http://emberjs.com/blog/, необходимо указать root URL-адрес /blog/
.
. Этого можно достичь, настроив свойство rootURL. на ENV:
module.exports = function(environment) {
var ENV = {
modulePrefix: 'my-blog',
environment: environment,
rootURL: '/blog/',
locationType: 'auto',
};
}
В вашем случае, однако, этот rootURL
является динамическим c. EmberRouter имеет функцию инициализации, которую вы можете использовать для динамической установки этого значения во время выполнения перед созданием любых URL-адресов в вашем приложении путем динамической проверки загруженного URL-адреса.
export default class Router extends EmberRouter {
init(){
super.init(...arguments);
// trailing slash is required for rootURL
let acctsSubUrl = window.location.pathname.match(/^\/accounts\/\d+\//);
if(acctsSubUrl){
this.rootURL = acctsSubUrl[0];
}
}
location = config.locationType;
rootURL = config.rootURL;
}
Если сделайте это, пусть значение по умолчанию ENV
для rootURL
будет /
. Это должно решить ваши требования к префиксу динамического c, который загружает для всех URL-адресов маршрутов, когда они присутствуют. Я проверил это против Ember 3.17, и он работает