私はユーザー入力を受け取り、[保存]ボタンをクリックすると親ビューモデルに情報を渡し、サーバーに送信して次のセクションに移動できるようにするカスタム要素があります。Aureliaでは、カスタム要素から呼び出されるビューモデルを含む私の関数をバインドできますか?
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が親ビュー-model.jsと親ビュー-model.htmlを表す)を参照してください:
https://gist.run/?id=96b203e9ca03b62dfb202626c2202989
それは働きます!やや。残念ながら、this
はparent-view-model
の代わりにmy-element
にバインドされているようです。この例では、コンソールに表示されるのはparent property: undefined
です。それは動作しません。
私はEventAggregatorを利用してカスタム要素とビューモデルの間のコミュニケーションを容易にすることができますが、私がそれを手助けすることができれば、複雑さを避けることができます。
「save.call」の使い方と、Aureliaドキュメントハブのパラメータを渡す方法は、次のURLにあります。 http://aurelia.io/hub.html#/doc/article/aurelia/バインディング/最新/バインディングの基礎/ 4 私はあなたの答えを読んだ後、その文書をブラウズすることになった! – rodu
コメントのリンクを@roduから更新しました:http://aurelia.io/docs/binding/basics#function-references – pettys