在路由器中动态安装引擎



如何在路由器初始化期间根据服务中的状态动态更新路由器?假设我有 4 个引擎,其中一个必须根据服务中的状态装载到应用程序中,无论状态如何,安装的引擎都必须具有特定名称,而不管可能安装的任何引擎。

目前不支持此功能,并且在 ember-engines 存储库中可能属于此问题: https://github.com/ember-engines/ember-engines/issues/99


从 ember 引擎的 v0.5 开始,应该存在一个临时解决方法(需要 ember 2.12 和 ember-cli 2.12)。您必须通过ember g helper load-engine创建一个帮助程序,例如load-engine

其内容将是:

export default Ember.Helper.extend({
assetLoader: Ember.inject.service(),
compute([name]) {
if (this.engineName === name && this._resolved) { return name; }
this.engineName = name;
let assetLoader = this.get('assetLoader');
assetLoader.loadBundle(name)
.then(() => {
this._resolved = true;
this.recompute();
});
return null;
}
});

然后你会像这样使用它:

{{mount (load-engine boundEngineName)}}

注意:最初由 https://github.com/mike183 发布在 Ember 松弛频道

最新更新