我现在被困了两天而且我正在为这个我要描述的问题拍摄空白。
我做了一个傻瓜:http://plnkr.co/edit/OrUiqcFfb70VFtO06sNT
所以,我有<main-element>
- 此元素包含两个孩子:<child-element>
和<sub-main>
。这两个元素都绑定在owner
中设置的<main-element>
对象上。像这样:
<child-element owner="{{owner}}"></child-element>
现在,<sub-main>
包含另一个元素 - <sub-child-element>
。
<template>
<sub-child-element id="sub"></sub-child-element>
</template>
但它必然会绑定owner
属性:
attached: function() {
this.$.sub.owner = this.owner;
}
您可能已经猜到<sub-child-elements>
没有看到对owner
对象所做的更改。我试图将this.set
和this.notifyPath
洒在整个地方,但没有帮助。
任何使这项工作的方法?甚至可以做我想做的事情吗?
答案 0 :(得分:1)
您可以在owner
中观察sub-main
,就像这样。
observers: [
'ownerChanged(owner.*)'
],
每当它发生变化时,都要通知sub-child-element
。
ownerChanged: function(event){
this.$.sub.notifyPath(event.path, event.value);
}
这里有fork你的掠夺者。
<强>更新强>
您还可以观察特定路径,例如owner.details.location
。请注意,处理程序的参数将是新值。对于deep path observation(例如owner.*
),处理程序接收更改记录作为参数。
所以在你的例子中,你可以这样做。
observers: [
'ownerChanged(owner.details.location)'
],
ownerChanged: function(newValue){
this.$.sub.notifyPath("owner.details.location", newValue);
}