У меня есть пользовательский элемент, который будет принимать пользовательский ввод, а при нажатии кнопки [save] я хочу передать информацию родительской модели представления, чтобы я мог отправить ее на сервер и перейти к следующему разделу. Я собираюсь упростить это, например в целях:В 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 представляет родительский-View-model.js и родительский-View-model.html):
https://gist.run/?id=96b203e9ca03b62dfb202626c2202989
Это работает! Вид. К сожалению, , по-видимому, привязан к my-element
вместо parent-view-model
, поэтому в этом примере то, что напечатано на консоли, является: parent property: undefined
. Это не будет работать.
Я знаю, что могу использовать EventAggregator для облегчения связи между настраиваемым элементом и моделью просмотра, но если я могу помочь, я бы хотел избежать дополнительной сложности.
Вы можете увидеть, как использовать 'save.call' и как передать параметры в концентраторе doc Aurelia по этому адресу: http://aurelia.io/hub.html#/doc/article/aurelia/ binding/latest/binding-basics/4 Я добрался до того, что просматривал документ после прочтения вашего ответа! – rodu
Обновленная ссылка для комментария от @rodu: http://aurelia.io/docs/binding/basics#function-references – pettys