子カスタム要素のリピーターを持つ親テンプレートがあります。
<!-- users.html -->
<div class="col-sm-6 col-md-3" repeat.for="user of users">
<git-hub-user-card user.bind="user" edit-user.bind="editUser"></git-hub-user-card>
</div>
editUser
親 VM にあるコールバックであり、子カスタム要素から呼び出す必要があります。
これが私の子カスタムコンポーネントです
/*user.js*/
import {customElement, bindable} from 'aurelia-framework';
@customElement('git-hub-user-card')
export class GithubUser {
@bindable editUser;
@bindable user = {};
bind(parentCtx) {
this.$parentCtx = parentCtx;
}
}
ここに子テンプレートがあります
<!-- user.html -->
<div class="content">
<p class="name" >${user.login}</p>
<a href="#" class="btn btn-default" click.delegate="editUser.call($parentCtx, $event, user)">Edit Name</a>
</div>
そのため、バインディングによって子コンポーネントにコールバック関数を渡しました。
<git-hub-user-card user.bind="user" edit-user.bind="editUser"></git-hub-user-card>
私の最初の質問: 大丈夫ですか? または、子コンポーネントからコールバックを呼び出すためのより適切な方法がありますか?
次に、子 VM で親 VM コンテキストを取得しようとしました。
bind(parentCtx) {
this.$parentCtx = parentCtx;
}
コールバック呼び出しをこのコンテキストにバインドしようとしました:
<a click.delegate="editUser.call($parentCtx, $event, user)">Edit Name</a>
ただし$parentCtx
、この場合repeat.for
は親テンプレートにあるため正しくありません。$parentCtx
私のGithubUserと同じです。親 VM で editUser の正しいコンテキストを取得するにはどうすればよいですか? バウンディングでパスする必要がありますか?