2017-02-17 7 views
2

ルータの初期化中にサービス内の状態に基づいてルータを動的に更新するにはどうすればよいですか?私が4つのエンジンを持っていて、サービスの状態に基づいてアプリケーションにマウントする必要があり、状態が何であれ、どのエンジンがマウントされても、エンジンは特定の名前を持たなければならないとしましょう。エンジンをルータに動的にマウントする

答えて

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によって投稿