2017-03-17 3 views
1

私はコードを使ってコンポーネントを動的に(<compose>ではなく)構成し、ポップアップに似たサービスからDOMに追加しようとしています。Aureliaテンプレートエンジンを構成する

私の理解から、TemplatingEngine.composeメソッドで使用するのが最善の方法です。

これがまさにどのように使用されているかに関するまともな文書や小さなサンプルが見つかりません。

これは私がこれまで

constructor(
    loggerFactory: LoggerFactory, 
    private bindingEngine: BindingEngine, 
    private templatingEngine: TemplatingEngine, 
    private container: Container, 
    private viewResources: ViewResources 
) { 

    const hostee = this.templatingEngine.compose({ 
     host: document.body, 
     container: this.container, 
     bindingContext: { 

     }, 
     viewModel: SnackbarHostElement, 
     viewResources: this.viewResources, 
     viewSlot: new ViewSlot(document.body, true) 
    }); 

    hostee.then(x => { 
     x.attached(); 
    }); 

私はエラーを取得していないよいると.thenがトリガされているものである、しかし、コンポーネントがレンダリングされていないようです。どんな助けもありがとう!

+1

'viewModel'が文字列パスまたはインスタンスであるべきです。例えば、 'viewModel:new SnackbarHostElement()' –

+0

それはかなり感謝です! DIを 'container.get(SnackbarHostElement)'を使って 'new'を使うのではなく、 –

答えて

0

これは、最終的なコード(おかげ@Fabio)

async init(): Promise<View | Controller> { 
    const viewController = await this.templatingEngine.compose({ 
     host: document.body, 
     container: this.container, 
     bindingContext: { 

     }, 
     viewModel: this.container.get(SnackbarHostElement), 
     viewResources: this.viewResources, 
     viewSlot: new ViewSlot(document.body, true) 
    }); 
    viewController.attached(); 
    return viewController; 
} 
関連する問題