我的应用程序使用ember-i18n插件。出于SEO的目的,我想在URL中添加一个/lang-code/。
当更改语言时,history.pushState可以更改URL及其权限,但是页面上的链接不会针对新的语言更改,即使router.rootURL更改了。
到目前为止,我只能更改window.location.pathname,但因此发出了一个新的网络请求。
我尝试覆盖href-to helper (从ember-href-to addon),并添加了以下内容:
_recomputeOnLocaleChange: Ember.observer('i18n.locale', function() {
console.log("here?");
this.recompute();
}) 它会在区域设置更改时执行,但显然重新计算不会做任何事情。即使使用setTimeout也是如此(因为rootURL可能还没有改变)。链接都是一样的。
你能给我一些建议吗?将不胜感激!谢谢你!!
发布于 2018-02-16 06:44:23
在router.js文件的didTransition钩子中,检查区域设置是否已更改,如果已更改,则将服务的属性设置为新的区域设置。然后,在您的帮助器中,可以检查该属性。
在router.js中
oldI18nLocale: null,
didTransition() {
this._super(...arguments);
// ...
let i18nLocale = this.get('locale.i18n');
if (i18nLocale !== this.get('oldI18nLocale')) {
this.set('someService.i18nlocale', this.get('locale.i18n');
}
this.set('oldI18nLocale', i18nLocale));
}在您的帮助器中:
recomputeOnLocaleChange: Ember.observer('someService.i18nLocale', function() {
this.recompute();
})希望这能起作用。
https://stackoverflow.com/questions/48647352
复制相似问题