0

我应该在哪个路由/组件中注入“i18n”服务以便在 application.hbs 中使用它?我正在尝试在其他 HBS 文件中使用它,如果我将“i18n”注入到路由/组件中 - 我可以使用它。

但它只是在 application.hbs 中不起作用

4

2 回答 2

1

通常,您不必注入i18n服务即可使用t帮助程序,这是您通常从模板执行的操作。

但一般来说,如果您想在路由模板中使用服务,则需要将服务注入控制器。因此,您需要将服务注入application控制器以在application模板上使用它。

于 2017-11-16T09:42:03.887 回答
0

您可以通过使用实例初始化程序并使用以下代码将 i18n 服务注入您的所有路由和组件来做到这一点:

/instance-initializers/component-route-i18n-injector.js

import Ember from 'ember';

export function initialize(appInstance) {

  let i18n = appInstance.lookup('service:i18n');
  Ember.Component.reopen({
    i18n: i18n
  });
  Ember.Controller.reopen({
    i18n: i18n
  });
}

export default {
  name: 'component-route-i18n-injector',
  initialize
};

你可以看看这个twiddle

于 2017-11-15T11:45:55.093 回答