聚合物:势必设置属性不会改变

时间:2015-08-27 09:52:50

标签: polymer polymer-1.0

我现在被困了两天而且我正在为这个我要描述的问题拍摄空白。

我做了一个傻瓜: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.setthis.notifyPath洒在整个地方,但没有帮助。

任何使这项工作的方法?甚至可以做我想做的事情吗?

1 个答案:

答案 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);
}