这是对这个问题的跟进:Access a DOM element in Aurelia
屏幕激活生命周期中是否有允许我在设置绑定后运行代码的挂钩? ref
目前,似乎在activate
调用挂钩后的一段时间内ref
绑定尚未设置,然后在某个时候它们被激活。我通过在最新(v0.13.0)骨架导航存储库的克隆版本的<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
有没有办法在生效后挂钩到视图模型?