在Aurelia中,当我想访问作为aurelia自定义元素的DOM元素的视图模型时,我可以使用Aurelia附加的au
属性,例如componentElement.au.controller.viewModel
。
当我的自定义元素是无容器(类级别的属性@containerless
)时,属性au
不可用。
这个要点证明了这一点: https://gist.run/?id=928f97f49c01c1db10d8bf4399f5c335
当我只引用其DOM元素时,如何访问无容器自定义组件的viewmodel?
答案 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
}
}