我应该在哪个路由/组件中注入“i18n”服务以便在 application.hbs 中使用它?我正在尝试在其他 HBS 文件中使用它,如果我将“i18n”注入到路由/组件中 - 我可以使用它。
但它只是在 application.hbs 中不起作用
我应该在哪个路由/组件中注入“i18n”服务以便在 application.hbs 中使用它?我正在尝试在其他 HBS 文件中使用它,如果我将“i18n”注入到路由/组件中 - 我可以使用它。
但它只是在 application.hbs 中不起作用
通常,您不必注入i18n
服务即可使用t
帮助程序,这是您通常从模板执行的操作。
但一般来说,如果您想在路由模板中使用服务,则需要将服务注入控制器。因此,您需要将服务注入application
控制器以在application
模板上使用它。
您可以通过使用实例初始化程序并使用以下代码将 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。