2017-01-28 14 views
8

Я пытаюсь понять хост и цель (и элемент) в следующем контексте, взятом из документации Polymer Path и Polymer Data Flow.Host vs Target in Polymer

Рассмотрим следующую диаграмму:

enter image description here

Теперь рассмотрим следующее утверждение (из той же documentation):

«Когда два элемента в локальной DOM связаны с тем же свойством появляется данных перетекать из одного элемента в другой, но этот поток опосредуется хозяином ».

До сих пор так хорошо. Затем он продолжает:

«Изменение, сделанное одним элементом, распространяется до хоста, то хост передает это изменение ко второму элементу».

Первая часть: «Изменение, сделанное одним элементом, распространяется до хоста ...» Означает ли это, что изменение первого элемента сначала распространяется на его собственный хост? И действительно ли «элемент» означает свойства данных элемента?

Вторая часть ", тогда хост передает изменение ко второму элементу". Разве мы распространяемся до свойств данных второго элемента? Это вводит в заблуждение здесь, поскольку есть только один элемент или объект данных, который разделяется между двумя элементами ehhh?

Я думаю, что изменения, внесенные в свойство данных первого элемента, сначала отправляются на его собственный хост, а затем первый хост передает это изменение обратно на элемент данных второго элемента (который, таким образом, является данными первого элемента объект).

ответ

2
<parent-el> 
    <user-profile primary-address="{{addr}}"></user-profile> 
    <address-card address="{{addr}}"></address-card> 
</parent-el> 

Если какой-либо элемент изменяет addr (дочерние элементы могут использовать любое имя, они хотят), то изменение будет распространяться на родителей, а затем к другому элементу.

Если вместо привязки используется [[addr]], изменения будут распространяться только от родителя к дочернему.

Обратите внимание, что оба дочерних элемента должны иметь notify: true, установленные в соответствующем свойстве (primaryAddress или address), чтобы родительский элемент был уведомлен об изменениях, а двусторонняя привязка полностью настроена.

Также обратите внимание, что это слушает, что объект изменяется только в целом. Для прослушивания изменений в под-свойствах, например. addr.street родитель должен добавить наблюдателя. Для получения дополнительной информации об этом см. complex observers.