在Polymer中使用原型的侦听器属性侦听孩子的属性更改通知程序

时间:2015-06-07 13:44:19

标签: javascript polymer polymer-1.0

为什么这不起作用? 我想一起使用notifylisteners。我错过了什么吗?

Polymer({
  is: 'x-child',

  properties: {
    message: {
      type: String,
      value: '',
      notify: true
    }
  }
});

Polymer({
  is: 'x-dad',

  listeners: {
    'message-changed': '_onMessageReceived'
  },

  _onMessageReceived: function (e) {
    alert('child sent a message');
  }
});

方案

var d = document.createElement('x-dad');
var c = document.createElement('x-child');
d.appendChild(c);
c.message = 'new';

2 个答案:

答案 0 :(得分:1)

在devguide中写道:

  

当属性发生更改时,该元素会触发非冒泡 DOM事件,以指示对感兴趣的主机的更改。

https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#change-notification-protocol

这意味着仅在x-child元素上调用事件侦听器,而不在其祖先上调用。这可能是你所缺少的。

答案 1 :(得分:-1)

在你提供的场景中,Polymer如何知道如何将x-dad的消息属性与x-child的消息属性绑定?

如果在html中声明x-child,要关联这2个项目,则必须声明如下内容:



<x-child message={{message}}></x-child>
&#13;
&#13;
&#13;

至于让你当前的设置工作,可以考虑类似于Bind a value between a parent and a child element where child element is created using javascript

中使用的设置