Aurelia-从生成的DOM元素中访问ViewModel函数/绑定

Aurelia-从生成的DOM元素中访问ViewModel函数/绑定,dom,aurelia,Dom,Aurelia,我的视图(html)有一部分是由viewmodel/类以编程方式生成的。它使用AureliaDOM()功能生成原始HTML元素并将其添加到视图中 但是,我无法在生成的html中获取事件以调用viewmodel。例如: let deleteButton = this.dom.createElement("button"); deleteButton.setAttribute("onclick", "cancelCreditNote(`${ row.creditNoteId }`)"); 单击生成

我的视图(html)有一部分是由viewmodel/类以编程方式生成的。它使用Aurelia
DOM
()功能生成原始HTML元素并将其添加到视图中

但是,我无法在生成的html中获取事件以调用viewmodel。例如:

let deleteButton = this.dom.createElement("button");
deleteButton.setAttribute("onclick", "cancelCreditNote(`${ row.creditNoteId }`)");
单击生成的按钮不会调用viewmodel,它确实具有
cancelCreditNote
功能。其他各种事情,如
deleteButton.setAttribute(“click.delegate”、“cancelCreditNote(“${row.creditNoteId}”)也不工作

有人知道如何从aurelia中的essentiall'raw'html访问viewmodel类吗?

不幸的是,在这个例子中,我不能使用标准的aurelia模板来生成HTML

在我的HTML中,我使用以下内容:

<div id="collapsesidebar" click.delegate="toggleSidebar()">
您也可以使用JQuery从视图模型执行此操作,如下所示:

attached() {
    $('main').on('click', ()=> alert('hi'));
}
最后一个选项只有在触发
attached()
方法之后才可用:在此之前,绑定需要执行其工作,只有在元素位于dom内部之后

换句话说:此将不起作用:

activate(){
    $('main').on('click', ()=> alert('hi'));
}

因为
构造函数
激活
方法都是在
附加的
方法之前被激发的。

PAL上的DOM属性只是浏览器DOM对象的抽象,create元素很可能只是调用
document.createElement
,它不提供对所创建元素的任何Aurelia绑定

您可以尝试使用
aurelia.enhance(context,element)
,它接受现有的DOM元素并通过模板引擎运行它


使用此方法,您还可以传递绑定上下文以应用于元素。

我将尝试向附加方法中的元素添加行为,并将报告。
activate(){
    $('main').on('click', ()=> alert('hi'));
}