私はAureliaを使用しています。コンテンツがAureliaに動的に読み込まれた後に関数を実行
私はpost
ルートを持っています。これは、渡された投稿が表示されますid
。 サーバがHTMLに記事を書くために使用される記法をコンパイルし、私が使用して私のテンプレートでこのコンテンツをロードしています:
<div innerHTML.bind="post.content"></div>
// in the activate() function
client
.fetch(`api/post/${params.id}`)
.then(res => res.json())
.then(data => {
this.post = data;
// this is the workaround I am currently using
setTimeout(this.displayLineNumbers, 200);
});
が、私はときに関数を実行するための任意の方法を見つけることができませんでしたコンテンツがビューに添付されていました。 私だけを使用する場合:コンテンツがまだ接続されていないとして、それは失敗します
this.post = data;
this.displayLineNumbers();
ので、私の機能を変更することを意図している要素はまだ利用できません。私が使用している現在の回避策は、200ms待ってから関数を実行することです。
動的に読み込まれたコンテンツがいつ添付されるかを知る方法(イベントまたは機能)はありますか?またはinnerHTML.bind
よりコンテンツをテンプレート化する別の方法ですか?
これは多くの人が尋ねた問題であり、良い回避策です。 Aureliaは '.queueMicroTask()'を自動的に追加し、viewmodelメソッド( 'bindingFinished()'など)を呼び出すライフサイクルフック(可能であれば)を追加することを検討する必要があります。 – LStarky
このためには 'queueMicroTask'を使うことをお勧めします。そして公式のトレーニングコースでこれを教えてください。 –