我有一个将接受用户输入的自定义元素,在单击 [save] 按钮时,我想将信息传递给父视图模型,以便将其发送到服务器并移至下一部分。例如,我将对此进行简化:
my-element.js
:
import { customElement, bindable } from 'aurelia-framework';
@customElement('my-element')
@bindable('save')
export class MyElement { }
my-element.html
:
<template>
<button click.delegate="save()">Click this</button>
</template>
parent-view-model.js
:
export class ParentViewModel {
parentProperty = 7;
parentMethod() {
console.log(`parent property: ${this.parentProperty}`);
}
}
parent-view-model.html
:
<template>
<require from="./my-element"></require>
<div class="content-panel">
<my-element save.bind="parentMethod"></my-element>
</div>
</template>
演示见(app.js 和 app.html 分别代表 parent-view-model.js 和 parent-view-model.html):
https://gist.run/?id=96b203e9ca03b62dfb202626c2202989
有用!有点儿。不幸的是,this
似乎绑定到my-element
而不是parent-view-model
,所以在这个例子中,打印到控制台的是:parent property: undefined
。那不管用。
我知道我可以利用 EventAggregator 来促进自定义元素和视图模型之间的一些通信,但如果我能帮助它,我想避免增加复杂性。