为什么这不起作用?
我想一起使用notify
和listeners
。我错过了什么吗?
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';
答案 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;
至于让你当前的设置工作,可以考虑类似于Bind a value between a parent and a child element where child element is created using javascript
中使用的设置