从插件访问 Ember 环境配置 (ENV)?

vog*_*tix 3 javascript ember.js

我有一个插件,它在开发和运行时为服务使用不同的主机。我相信解决这个问题的方法是在应用程序的 config/environment.js 中定义主机名,并让服务按如下方式获取它:

import ENV from '../config/environment';

export default AjaxService.extend({
     host: ENV.APP.serviceHost,
     ...
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,因为它认为 environment.js 文件的路径在插件的范围内,而不是在主应用程序的范围内。当包含此插件的应用程序名称未知时,正确的方法是什么?

我正在使用 Ember 2.11。

小智 5

我知道有两种方法:

选项1

余烬配置服务

这个插件允许通过注入的服务访问配置。它为我解决了同样的问题。

选项 2

通过重新导出手动传递配置值。

// my-addon/app/services/my-ajax.js

// import config being in the app namespace
import ENV from '../config/environment';

import Service from 'my-addon/services/my-ajax';

export default Service.extend({
  apiURL: ENV.APP.apiURL
});
Run Code Online (Sandbox Code Playgroud)

/// my-addon/addon/services/my-ajax.js

export default AjaxService.extend({
  init() {
    console.log('api url in addon', this.apiUrl);
  }
})
Run Code Online (Sandbox Code Playgroud)