Aurelia自定义元素:访问父方法

Aurelia自定义元素:访问父方法,aurelia,Aurelia,我使用Aurelia的自定义元素在一组条目上重复。以下是示例要点: 现在,当单击自定义元素中定义的按钮时,我需要访问deleteEntry(entry)方法。我尝试使用$parent.deleteEntry(entry),但它不起作用 我看到了这个问题,但它已经存在一年多了,我想知道现在是否有更干净的方法来实现这一点 使用绑定生命周期事件,您可以在Aurelia中获得父视图模式 bind(bindingContext, overrideContext) { this.parent

我使用Aurelia的自定义元素在一组条目上重复。以下是示例要点:

现在,当单击自定义元素中定义的按钮时,我需要访问
deleteEntry(entry)
方法。我尝试使用
$parent.deleteEntry(entry)
,但它不起作用


我看到了这个问题,但它已经存在一年多了,我想知道现在是否有更干净的方法来实现这一点

使用绑定生命周期事件,您可以在Aurelia中获得父视图模式

bind(bindingContext, overrideContext) {
        this.parent = bindingContext;
    }
现在,您可以访问从父视图到视图的所有变量和方法

类似于下面的子视图中的代码

this.parent.parentmethod();

为什么不使用
调用
绑定来实现这一点

这里有一个例子:

app.html


日记帐分录
app.js

导出类应用程序{
条目=[{
“日期”:“1月1日”,
“注意”:“你好,世界”
}, {
“日期”:“1月2日”,
“注意”:“早上好”
}];
删除条目(条目){
console.log(“删除条目”);
控制台日志(条目);
常量索引=this.entries.indexOf(entry);
本条目的拼接(索引1);
}
}
entry.html


${entry.date}X
${entry.note}
entry.js

从'aurelia framework'导入{bindable};
导出类EntryCustomElement{
@可装订分录;
@可绑定删除函数;
删除(){
此函数为.delete函数();
}
}

显然,在实际实现中,您需要确保绑定到
deleteFunction
的实际上是一个函数,然后再尝试调用它。

两篇文章可能会有所帮助,并感谢您提供的有效答案。这很有帮助。但是,我在
app.js
viewmodel中还有很多函数,比如
add()
edit()
read()
,等等。我是否需要为它们中的每一个添加
调用
绑定?我会重新考虑您的设计。您的组件与父组件的耦合过于紧密,这就是我在直接调用许多父方法时所说的。你可以看看使用自定义事件。我明白了。你是说当你说
自定义事件时
?这就是我在文档中搜索
自定义事件时首先出现的问题。至于设计,这不是一个有效的用例吗?我在父视图模型中有一个集合,我想使用
自定义元素
在其上循环。但是要添加
CRUD
功能,我需要访问父集合,因为
自定义元素的
viewmodel对集合一无所知。这有意义吗?您的自定义元素不需要访问父集合。您的自定义元素只需触发一个事件,父元素就可以使用
trigger
delegate
订阅该事件。以下是有关自定义事件的信息:代理行为与此无关。是的,我不得不跳过一些额外的环
overrideContext.parentOverrideContext.bindingContext
-不确定为什么,但是这个答案肯定让我走上了正确的道路,我通过
bindingContext.router.container.viewModel