首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何始终使用Ember.JS加载余烬引擎

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

Stack Overflow用户
提问于 2017-09-28 07:46:00
回答 1查看 259关注 0票数 0

我目前正试图在任何地方访问我的余烬-发动机。我想知道每个引擎的名称,因为我想在我的主应用程序中显示每个引擎。

这里的问题是,我无法找到获取名称的方法,因为只有当我们导航到与引擎相关的页面时,引擎才会被加载。

这是通常捕获每个引擎的每个名称的服务,称为引擎管理器。

代码语言:javascript
复制
import Ember from 'ember';
import App from '../app';

/**
 * This service will help us manage every engines that are in our application,
 */

export default Ember.Service.extend({
    availableEngines: [],

    addEngines(engines)
    {
        this.get('availableEngines').push(engines);
        console.log(this.get('availableEngines'));
    }
});

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

代码语言:javascript
复制
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:将我的lazy-loading设置为truefalse不会改变任何事情。

EN

回答 1

Stack Overflow用户

发布于 2017-09-29 12:29:34

多亏了这个松懈的社区,我们找到了一个解决办法。如果我们不进入发动机,它就不能装车。

因此,这里有一个解决方法,它并不真正响应答案,但至少您可以访问引擎中的数据,比如名称或服务。

第一

您必须在应用程序中在服务中创建一个容器:

代码语言:javascript
复制
export default Ember.Service.extend({
 fetchEngines()
    {
    let container = Ember.getOwner(this).lookup('application:main').engines; 
    }
});

就是这样,如果您知道如何使用这些数据,您就有能力获取引擎的名称。

第二点

现在您有了一个容器,但是不能像这样使用数据,例如,这里的容器不是JSON对象。

代码语言:javascript
复制
let newObject = [];
for (let key in container) {
     if (container.hasOwnProperty(key))
         newObject.push(key);
}

这里,newObject是一个数组,其中包含app.js中存在的每个引擎的名称。希望这能帮到一些人。我不会接受这个回应,因为这不是问题所问的,但这只是一个开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46463684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档