これは、この質問のフォローアップです: Access a DOM element in Aurelia
スクリーン アクティベーション ライフサイクルに、バインドの設定後に コードを実行できるフックはありますか? 現在、バインディングがまだ設定されていないときにフックが呼び出されたref
後、ある時点でアクティブになる期間があるようです。これをテストするには、最新の (v0.13.0) スケルトン ナビゲーション リポジトリのクローン バージョンの下部近くにを追加し、次のようにビュー モデル内の参照の存在をテストします。activate
ref
<div ref="myDiv"></div>
welcome.html
export class Welcome{
heading = 'Welcome to the Aurelia Navigation App!';
firstName = 'John';
lastName = 'Doe';
testMyDiv() {
console.log("Getting my div")
console.log(this.myDiv)
}
get fullName(){
this.testMyDiv()
return `${this.firstName} ${this.lastName}`;
}
welcome(){
alert(`Welcome, ${this.fullName}!`);
}
}
テンプレートの下部のスニペット...
<button type="submit" class="btn btn-default">Submit</button>
</form>
<div ref="myDiv"></div>
</section>
</template>
これは、コンソールに表示されるもののスナップショットです...
welcome.js:10 Getting my div
welcome.js:11 undefined
welcome.js:10 Getting my div
welcome.js:11 undefined
welcome.js:10 Getting my div
welcome.js:11 <div ref="myDiv" class="au-target"></div>
welcome.js:10 Getting my div
welcome.js:11 <div ref="myDiv" class="au-target"></div>
(continues)
このようなプリントアウトは無期限に続きます。名前が変更された場合に画面を更新するために定期的に呼び出されていることがわかりfullName()
ます(これはダーティチェックだと思います)...しかし、最初に、参照div
されたものがのプロパティとして有効でない期間があることがわかりますビューモデル、そしてそれは有効です。誰かがこれを説明できますか?ref
有効になった後にビューモデルにフックする方法はありますか?