如何始终使用ember.JS加载余烬引擎

如何始终使用ember.JS加载余烬引擎,ember.js,ember-data,ember-cli,ember-engines,Ember.js,Ember Data,Ember Cli,Ember Engines,我目前正在尝试访问我的网站,无论我在哪里。我想知道每个引擎的名称,因为我想显示主应用程序中的每个引擎。 这里的问题是,我找不到一种方法来获取这些名称,因为只有当我们导航到与引擎相关的页面时,才会加载引擎。 这是通常捕获每个引擎的每个名称的服务,称之为引擎管理器: 然后在每个引擎中,更准确地说,在每个引擎的每个anEngines/addon/engine.js中,我放: import Engine from 'ember-engines/engine'; import loadInitialize

我目前正在尝试访问我的网站,无论我在哪里。我想知道每个引擎的名称,因为我想显示主应用程序中的每个引擎。
这里的问题是,我找不到一种方法来获取这些名称,因为只有当我们导航到与引擎相关的页面时,才会加载引擎。
这是通常捕获每个引擎的每个名称的服务,称之为引擎管理器:

然后在每个引擎中,更准确地说,在每个引擎的每个anEngines/addon/engine.js中,我放:

import Engine from 'ember-engines/engine';
import loadInitializers from 'ember-load-initializers';
import Resolver from './resolver';
import config from './config/environment';
import Ember from 'ember';

const { modulePrefix } = config;

const Eng = Engine.extend({
    modulePrefix,
    Resolver,
    dependencies: {
        services: [
            'engines-manager'
        ]
    },
    enginesManager: Ember.inject.service('engines-manager'),
    init() {
        this._super(...arguments);
        this.get('enginesManager').addEngines('nameOfMyEngines');
    }
});

loadInitializers(Eng, modulePrefix);

export default Eng;
如果我们进入引擎相关页面,这种方法是有效的,但我不想进入每个页面加载它们,因此我的问题是:如何始终加载余烬引擎?


PS:将我的
延迟加载设置为
true
false
不会改变任何事情。

感谢slack社区,我们找到了一个解决方法。如果我们不进入发动机,发动机将无法加载。
因此,这里有一个解决方法,它不会真正响应答案,但至少您可以访问引擎中存在的数据,如名称或服务

弗斯特 您必须在应用程序中的服务中创建容器:

export default Ember.Service.extend({
 fetchEngines()
    {
    let container = Ember.getOwner(this).lookup('application:main').engines; 
    }
});
就是这样,如果您知道如何使用这些数据,您就有能力获取引擎的名称

let newObject = [];
for (let key in container) {
     if (container.hasOwnProperty(key))
         newObject.push(key);
}
其次 您现在有了一个容器,但是数据不能像这样使用,例如,这里的容器不是JSON对象

let newObject = [];
for (let key in container) {
     if (container.hasOwnProperty(key))
         newObject.push(key);
}
这里的
newObject
是一个数组,其中包含app.js中存在的每个引擎的名称。 希望能帮助一些人。我不会接受这个回答,因为这不是问题所要问的,但这只是一个开始