我试图了解以下上下文中的主机和目标(和元素)取自Polymer Path和Polymer Data Flow文档。
考虑下图:
现在考虑以下声明(来自相同的documentation):
"当本地DOM中的两个元素绑定到同一属性时,数据似乎从一个元素流向另一个元素,但此流程由主机调解。"
到目前为止,这么好。然后继续说:
"由一个元素进行的更改传播到主机,然后主机将更改传播到第二个元素。"
第一部分:"由一个元素进行的更改传播到主机..."这是否意味着对第一个元素的更改首先传播到它自己的主机?是"元素"实际上是指元素的数据属性?
第二部分"然后主机将更改传播到第二个元素。"我们是否传播到第二个元素的数据属性?这里令人困惑,因为在两个ehhh元素之间只共享一个元素或数据对象?
我认为第一个元素的数据属性所做的更改首先转到它自己的主机,然后第一个主机将更改传播回第二个元素的数据元素(这也恰好是第一个元素的数据对象。
答案 0 :(得分:2)
<parent-el>
<user-profile primary-address="{{addr}}"></user-profile>
<address-card address="{{addr}}"></address-card>
</parent-el>
如果任一元素更改addr
(子元素可以使用他们想要的任何名称),则更改将传播到父元素,然后传播到另一元素。
如果任一绑定使用[[addr]]
,则更改只会从父级传播到子级。
请注意,两个子元素都应在相关属性(primaryAddress或地址)上设置notify: true
,以便通知父级更改并完全设置双向绑定。
另请注意,这会侦听对象仅作为整体进行更改。要监听子属性的更改,例如addr.street
父母应该添加观察者。有关详细信息,请参阅complex observers。