Aurelia переплет для пользовательских элементов

В настоящее время я сталкиваюсь со следующей проблемой, используя aurelia:

Следуя моей пользовательской модели:

export class User{
    @bindable name: string;
    @bindable address: Address;

У меня есть макет просмотра модели, включая форму:

Регистрация родительского пользователя JS

export class UserRegistration{
    @bindable user: User

    public registerUser(){
        let address = this.user.address;
        //register user and so on ...
    }
}

Шаблон родительской регистрации пользователя

<template>
    <require from="user-address"></require>    

    <form id="user-registration-form" submit.delegate="registerUser()>
        <user-adress user.bind="user"></user>
    </form>
</template>

и тогда у меня есть custom-элемент:

CustomElement userAddress JS

@customElement('userAddress')
@autoinject
export class userAddress{
      @bindable user: User;
}

CustomElement userAddress template:

<template>
    <input type="text" id="street-name" value.bind="user.address.streetname" />
</template>

Теперь я хочу, чтобы при нажатии кнопки "Отправить" информация из пользовательского элемента "user-address" была перенесена в модель представления макета, чтобы я мог использовать ее в "registerUser()".

Кто-нибудь может сказать мне, как я могу заставить это работать? В настоящее время я получаю только "неопределенный" в родительской модели представления.

2 ответа

Решение

Режим привязки по умолчанию для этого
<user-adress user.bind="user"></user>
будет односторонним..

Вы должны изменить это на
<user-adress user.two-way="user"></user>

что должно сделать

чтобы поддерживать связь с сообществом aurelia, присоединяйтесь к форумам aurelia https://discourse.aurelia.io/
и gitter канал https://gitter.im/aurelia/Discuss

Вам нужно использовать двустороннюю привязку. Ваша текущая ситуация, используя user.bind привязка выполняется только в одностороннем порядке. Это означает, что если вы редактируете привязку в дочернем элементе, она не будет обновляться в родительском элементе.

Если вы связываете значение следующим образом:

<user-address user.two-way="user"></user>

Любые изменения, которые вы вносите в user в user-address элемент также обновит user в родительской viewmodel.

Другие вопросы по тегам