首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember.js在区域设置更改时重新呈现链接

Ember.js在区域设置更改时重新呈现链接
EN

Stack Overflow用户
提问于 2018-02-07 00:15:56
回答 1查看 100关注 0票数 0

我的应用程序使用ember-i18n插件。出于SEO的目的,我想在URL中添加一个/lang-code/。

当更改语言时,history.pushState可以更改URL及其权限,但是页面上的链接不会针对新的语言更改,即使router.rootURL更改了。

到目前为止,我只能更改window.location.pathname,但因此发出了一个新的网络请求。

我尝试覆盖href-to helper (从ember-href-to addon),并添加了以下内容:

代码语言:javascript
复制
_recomputeOnLocaleChange: Ember.observer('i18n.locale', function() {
    console.log("here?");
    this.recompute();
})  

它会在区域设置更改时执行,但显然重新计算不会做任何事情。即使使用setTimeout也是如此(因为rootURL可能还没有改变)。链接都是一样的。

你能给我一些建议吗?将不胜感激!谢谢你!!

EN

回答 1

Stack Overflow用户

发布于 2018-02-16 06:44:23

router.js文件的didTransition钩子中,检查区域设置是否已更改,如果已更改,则将服务的属性设置为新的区域设置。然后,在您的帮助器中,可以检查该属性。

router.js

代码语言:javascript
复制
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));
}

在您的帮助器中:

代码语言:javascript
复制
recomputeOnLocaleChange: Ember.observer('someService.i18nLocale', function() {
    this.recompute();
})

希望这能起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48647352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档