我正在尝试创建一个聚合物组件,它将进行ajax调用并根据响应填充列表,我还想在每个列表元素中添加一个click / tap事件,以便在我点击时执行某些操作列表项目。
我像这样创建列表:
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('')
}
},
但是'listen'不起作用,我在聚合物文档中找不到任何可能对我有帮助的东西 - 没有超出组件并在完整文档上调用直接js,这不会很好。 .....有谁能帮助我?
谢谢, 科尔姆
答案 0 :(得分:4)
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