聚合物 - 将事件绑定到动态创建的元素

Polymer - Bind events to dynamically created elements

本文关键字:动态 创建 元素 绑定 事件 聚合物      更新时间:2023-09-26

我正在尝试创建一个聚合物组件,该组件将进行ajax调用并根据响应填充列表,并且我还想向每个列表元素添加一个单击/点击事件,以便在单击列表项时执行某些操作。

我像这样创建列表:

  populateList: function(items) {
    if (items.length == 0) {
      return;
    }
    var menu = this.$$('.mp-Autocomplete-dropdown-menu');
    var node = null;
    for (var k = 0; k < items.length; k++) {
      node = document.createElement('li');
      node.setAttribute('class', 'style-scope mp-autocomplete');
      node.setAttribute('tabindex', '0');
      node.innerHTML = items[k];
      menu.appendChild(node);
      this.listen(this.$$('li'), 'click', '_itemTapHandler');
      .addEventListener('')
    }
  },

但是"听"不起作用,我在聚合物文档中找不到任何其他可能对我有帮助的东西 - 没有走出组件并在完整文档上直接调用 js,这不会很好......谁能帮我?

谢谢科尔姆

this.$$('li')总是返回元素中的第一个<li>元素,这可能不是你想要的。

请改用:

this.listen(node, 'click', '_itemTapHandler');

如果您想稍后删除它

var node = ... /* get reference to node */
this.unlisten(node, 'click', '_itemTapHandler');

另请参阅 https://www.polymer-project.org/1.0/docs/devguide/events.html#imperative-listeners