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';
4

2 回答 2

1

在 devguide 中它写道:

当属性更改时,元素会触发一个非冒泡DOM 事件,以将这些更改指示给感兴趣的主机。

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

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

于 2015-06-07T13:57:05.790 回答
-1

在您提供的场景中,Polymer 应该如何知道如何将 x-dad 的 message 属性与 x-child 的 message 属性绑定?

如果您在 html 中声明 x-child,为了关联这两个项目,您必须声明如下内容:

<x-child message={{message}}></x-child>

至于让您当前的设置正常工作,也许考虑类似于在使用 javascript 创建子元素的父元素和子元素之间绑定值中使用的东西

于 2015-06-07T15:53:02.647 回答