2017-02-03 2 views
1

Я бы хотел, чтобы тело моего приложения было в состоянии изменить сообщение, указанное в заголовке.В Aurelia, как одна модель просмотра влияет на связанные переменные другого вида модели

Например, если header.html выглядит следующим образом:

<template> 
    ${message} 
</template> 

Как может изменить мнение сверстников-модель, которая отображается «сообщение» переменные? Или, возможно, я просто ошибаюсь ...

ответ

1

Наиболее распространенным решением для вашего сценария является использование родительской модели просмотра для объединения двух одноранговых узлов. Привяжите одну и ту же переменную (либо как одну переменную, либо как объект) для обоих детей, используя двустороннюю привязку. Затем, когда он изменяется в одном, он изменится в другом.

Пример:

вид Родитель (parent.html)

<template> 
    <require from="./header"></require> 
    <require from="./my-child2"></require> 

    <header message.two-way="message"></header> 
    <my-child2 message.two-way="message"></my-child2> 
</template> 

Child1 ViewModel (header.js)

import {bindable} from 'aurelia-framework'; 
export class Header { 
    @bindable message; 
} 

Child1 вид (заголовок. html)

<template> 
    ${message} 
</template> 

Child2 ViewModel (child2.js)

import {bindable} from 'aurelia-framework'; 
export class MyChild2 { 
    @bindable message; 
    attached() { 
    this.message = "Greetings from MyChild2!"; 
    } 
} 

Есть другие способы сделать это, но, надеюсь, это получает вас на правильном пути, так что вы можете увидеть, как обязательные работы через взгляды.

+0

Спасибо. Это поможет мне. – efunneko

+0

В конце концов, я действительно использовал решение из http://stackoverflow.com/questions/40263660/most-efficient-aurelia-binding-way-for-a-singleton-object. Моя точная ситуация лучше подходит для хранения некоторого глобального состояния в одноэлементном режиме. – efunneko

Смежные вопросы