获取无容器元素的ViewModel

时间:2017-08-18 09:21:37

标签: aurelia aurelia-templating

在Aurelia中,当我想访问作为aurelia自定义元素的DOM元素的视图模型时,我可以使用Aurelia附加的au属性,例如componentElement.au.controller.viewModel

当我的自定义元素是无容器(类级别的属性@containerless)时,属性au不可用。

这个要点证明了这一点: https://gist.run/?id=928f97f49c01c1db10d8bf4399f5c335

当我只引用其DOM元素时,如何访问无容器自定义组件的viewmodel?

2 个答案:

答案 0 :(得分:1)

我不确定这是否是您想要的,但您可以使用view-model.ref。例如:

<less-comp text="item three, containerless" view-model.ref="test"></less-comp>

用法:

export class App {
  attached() {
    console.log(this.test);
  }
}

答案 1 :(得分:0)

通过在视图模型中挂钩created生命周期来实现您想要的效果:

class ViewModel {
  created(owningView, view) {
    view.controller
    view.controller.viewModel // <-- this is what you want
  }
}