ルータの初期化中にサービス内の状態に基づいてルータを動的に更新するにはどうすればよいですか?私が4つのエンジンを持っていて、サービスの状態に基づいてアプリケーションにマウントする必要があり、状態が何であれ、どのエンジンがマウントされても、エンジンは特定の名前を持たなければならないとしましょう。エンジンをルータに動的にマウントする
2
A
答えて
2
これは現時点ではサポートされていない、とそうエンバー・エンジンのレポでこの問題に該当します:https://github.com/ember-engines/ember-engines/issues/99
一時的な回避策は、おそらく必要です(燃えさし-エンジンのV0.5のとして存在しますember 2.12およびember-cli 2.12)。 load-engine
のようなヘルパーをember g helper 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によって投稿