什么时候绑定到ref属性在Aurelia中生效?

什么时候绑定到ref属性在Aurelia中生效?,aurelia,Aurelia,这是对这一问题的后续行动: 屏幕激活生命周期中是否有一个钩子允许我在设置ref绑定后运行代码?当前,当ref绑定尚未设置时,调用activate钩子之后似乎有一段时间,然后在某个时候它们被激活。我通过在最新(v0.13.0)骨架导航repo的克隆版本中的欢迎.html底部附近添加来测试这一点,并测试视图模型中是否存在引用,如下所示: export class Welcome{ heading = 'Welcome to the Aurelia Navigation App!'; firs

这是对这一问题的后续行动:

屏幕激活生命周期中是否有一个钩子允许我在设置
ref
绑定后运行代码?当前,当
ref
绑定尚未设置时,调用
activate
钩子之后似乎有一段时间,然后在某个时候它们被激活。我通过在最新(v0.13.0)骨架导航repo的克隆版本中的
欢迎.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)
welcome.js:10获取我的div
欢迎光临。js:11未定义
欢迎。js:10得到我的div
欢迎光临。js:11未定义
欢迎。js:10得到我的div
欢迎光临。js:11​​
欢迎。js:10得到我的div
欢迎光临。js:11​​
(续)

像这样的打印会无限期地进行下去。您可以看到,
fullName()
被定期调用,以在名称更改时更新屏幕(我假设这是脏检查)。。。但是您可以看到,在开始时,引用的
div
作为视图模型的属性是无效的,然后它才是有效的。有人能解释一下吗?在
ref
生效后,是否有方法钩住视图模型?

通常,绑定在
bind
回调后处理并可用。但是,在这种情况下,由于需要访问DOM元素,因此需要将ViewModel绑定到视图并附加到视图,因此使用
附加的
回调

class ViewModel { 

    bind() {
        this.refItem == undefined; // true
    }

    attached() {
        this.refItem == undefined; // false
    }
}

正如您在评论中所指出的,有关activator回调的更多信息可在此处找到:

不正确,但非常有用!它为我指明了正确的方向。我需要使用
附加的
回调,这两个回调都在“扩展HTML”下引用。Gracias.我现在正在修复它,请检查所附的
引用
重复中的元素似乎不起作用。对于
中每个元素都是
ref=“
currentElementInLoop.htmlElement”`的情况,除非我做错了什么?如果我
setTimeout
attached
内,它会工作。@powerbucket查看TaskQueue,它是aurelia框架的一部分。