Polymer 核心选择器的“核心选择”事件如何工作?

Polymer 核心选择器的“核心选择”事件如何工作?,polymer,Polymer,我注意到核心选择器的核心选择事件的触发方式有些奇怪 假设我们有: HTML: 我发现,当我依次选择项目1和项目2时,我看到对于最后一个选择,事件被多次触发。它会被触发3次: 取消选择项目1 项目1的选择 项目2的选择 这应该会发生吗 我希望每次选择/取消选择都会触发一次事件,event.detail.item是单击的项目 另外,有没有办法获得core-selector.html的远程版本,我可以在JSBin上使用它来向您展示演示?core和paper元素位于//www.polymer-proje

我注意到核心选择器的核心选择事件的触发方式有些奇怪

假设我们有:

HTML:

我发现,当我依次选择项目1和项目2时,我看到对于最后一个选择,事件被多次触发。它会被触发3次:

取消选择项目1 项目1的选择 项目2的选择 这应该会发生吗

我希望每次选择/取消选择都会触发一次事件,event.detail.item是单击的项目

另外,有没有办法获得core-selector.html的远程版本,我可以在JSBin上使用它来向您展示演示?

core和paper元素位于//www.polymer-project.org/components/上,因此您可以这样制作JSBin:

您看到的效果是由核心选择器实现多重选择的方式造成的。我认为这是不恰当的,我们只是错过了它,因为我们倾向于对事件使用绑定


我发布了一张问题通知单:

似乎是一种已知的行为:

这是意料之中的。核心选择器的核心选择事件在 项目的选择状态已更改。当 项目被选中或取消选中。所以,这就是为什么你会在一个星期内看到两个事件 一次轻触,一次用于选中,一次用于取消选中

您可以使用event.detail中的isSelected来检查选择 国家frankiefu于2014年9月23日发表评论

然而,Polymer团队的Rob Dodson还有其他补充:

如果可能的话,我想重新讨论这个问题,因为我一直收到关于它的bug报告:Polymer/docs696

另外,从本教程中运行的一个DAs:

事件的双重触发似乎真的很奇怪-是的,有多个 根据注释选择核心选择器,但我 选择一个标签-这绝对感觉像一个错误,而不是理智。和 我个人同意,当我选择一个标签获得2个标签时,感觉很奇怪 我必须通过这些事件来找出谁被点击了

因此,谁知道使用核心激活而不是核心选择来处理单一选择事件。使用为事件历史记录选择的核心

<core-selector multi>
  <div>item 1</div>
  <div>item 2</div>
  <div>item 3</div>
</core-selector>
document.querySelector('core-selector').addEventListener('core-select', function (event) {
  console.log(event.detail.item.textContent);
  console.log(event.detail.isSelected);
});
    var tabs = document.querySelector('#tabs');
tabs.addEventListener('core-select', function(e) {
  if (e.detail.isSelected) {
    console.log("Selected: " + tabs.selected);
  }
});