我在Ember 2.18中有一个名为test的服务。例如
导出默认Service.extend({//一些代码})
如果可能,我需要能够从服务中的应用程序中初始化此测试服务。本质上是希望在不使用初始化程序的情况下,从服务内部在整个应用程序中注入服务。这可能吗?
答案 0 :(得分:0)
所有服务均在应用启动时实例化。
但是默认情况下,如果没有初始化程序,就无法将它们注入所有地方。我实际上建议不要这样做,因为它可能导致难以追踪的行为。
因此,要在没有初始化程序的情况下在另一个服务中使用该服务,您必须执行以下操作:
import { inject as service } from '@ember/service';
export default Service.extend({
testing: service(),
})
(从这里开始:https://github.com/rwjblue/ember-router-helpers/blob/master/addon/helpers/is-active.js)
import { inject as service } from '@ember/service';
import Helper from '@ember/component/helper';
import handleQueryParams from '../utils/handle-query-params';
export default Helper.extend({
router: service(),
init() {
this._super(...arguments);
this.addObserver('router.currentURL', this, 'recompute');
},
compute(_params) {
let params = handleQueryParams(_params);
return this.get('router').isActive(...params);
}
});