Javascript 从显示在repeater循环中的子自定义元素获取正确的上下文。奥雷利亚

Javascript 从显示在repeater循环中的子自定义元素获取正确的上下文。奥雷利亚,javascript,repeater,parent,aurelia,custom-element,Javascript,Repeater,Parent,Aurelia,Custom Element,我有一个父模板,它有一个用于子自定义元素的转发器 editUser回调位于父VM中,我需要从我的子自定义元素调用它 这是我的孩子自定义组件 /*user.js*/ 从“aurelia框架”导入{customElement,bindable}; @customElement('git-hub-user-card') 导出类GitubUser{ @可绑定编辑用户; @可绑定用户={}; 绑定(parentCtx){ 这。$parentCtx=parentCtx; } } 这是子模板 ${us

我有一个父模板,它有一个用于子自定义元素的转发器


editUser
回调位于父VM中,我需要从我的子自定义元素调用它

这是我的孩子自定义组件

/*user.js*/
从“aurelia框架”导入{customElement,bindable};
@customElement('git-hub-user-card')
导出类GitubUser{
@可绑定编辑用户;
@可绑定用户={};
绑定(parentCtx){
这。$parentCtx=parentCtx;
}
}
这是子模板


${user.login}

所以,我通过绑定在子组件中传递了回调函数


我的第一个问题:可以吗?或者有更简洁的方法从子组件调用回调

然后,我尝试在子VM中获取父VM上下文:

bind(parentCtx){
这。$parentCtx=parentCtx;
}
并尝试将回调调用绑定到此上下文:

编辑名称

但是在这种情况下,
$parentCtx
是不正确的,因为父模板中的
repeat.for
$parentCtx
等于我的GithubUser。如何在父VM中为editUser获取正确的上下文?是否应使用边界对其进行路径设置?

使用
users.html
模板中的
call
binding命令。当调用该方法时,它将保留正确的上下文/此上下文。下面是它的样子:

user.js

从'aurelia framework'导入{customElement,bindable};
@customElement('git-hub-user-card')
导出类GitubUser{
@可绑定编辑用户;
@可绑定用户;
}
user.html


${user.login}

users.html



将editUser方法移动到VM中以获取视图是否有意义?@weagle08不,没有意义。我想在弹出窗口中更改用户信息。所以我只需要一个弹出窗口,可以切换内容视图。如果我在子组件中移动这个弹出窗口,我会得到这个编辑窗口的很多实例。所以我想我应该把这个逻辑放在父组件中。非常感谢!它对我有用。我应该更仔细地阅读码头。