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