2016-05-26 21 views
2

viewmodel/classによってプログラムによって生成されたビュー(html)のセクションがあります。これは、Aurelia DOMAurelia Docs - pal :: Dom)機能を使用して、生のHTML要素を生成してビューに追加します。Aurelia - 生成されたDOM要素内からのViewModel関数/バインディングへのアクセス

ただし、生成されたhtml内でイベントを取得してviewmodelにコールバックできません。例:生成されたボタンの

let deleteButton = this.dom.createElement("button"); 
deleteButton.setAttribute("onclick", "cancelCreditNote(`${ row.creditNoteId }`)"); 

クリックしてcancelCreditNote機能を持っているのviewmodelにコールバックしません。 deleteButton.setAttribute("click.delegate", "cancelCreditNote('${ row.creditNoteId }')");のようなさまざまなものはうまくいきません。

aureliaのessentiall 'raw' htmlからviewmodelクラスにアクセスする方法を知っている人はいますか?

残念ながら、このインスタンスでは、標準のaureliaテンプレートを使用してHTMLを生成することはできません。あなたも、このようなjQueryを使って、あなたのビューモデルからこれを行うことができます

toggleSidebar(){ 
    alert('hi'); 
} 

:私はこの方法を持っている私の見解・モデルでは

<div id="collapsesidebar" click.delegate="toggleSidebar()"> 

:私のHTMLで

答えて

2

PALのDOMプロパティは、ブラウザのDOMオブジェクトの抽象化に過ぎません。create要素は、作成された要素へのAureliaバインディングを持たないdocument.createElementを呼び出している可能性があります。

aurelia.enhance(context, element)を使用すると、既存のDOM要素を受け取り、テンプレートエンジンを通じて実行できます。

このメソッドでは、バインディングコンテキストを渡して要素に適用することもできます。

0

私はこれを使用します。

attached() { 
    $('main').on('click',()=> alert('hi')); 
} 

attached()メソッドがトリガされた後、最後のオプションが提供されています:目の前にバインディングではその仕事を行う必要があり、その後は要素がdomの内側に配置されます。言い換えれば

:このは動作しません。

activate(){ 
    $('main').on('click',()=> alert('hi')); 
} 

constructoractivate方法はattached方法を解雇両方のため。

+0

アタッチされたメソッドの要素にビヘイビアーを追加しようとします。 – Ash

関連する問題