在 Polymer 1.0 中使用带有纸按钮的事件无法访问数据属性

Data attribute not accessible using in event with paper-button in Polymer 1.0

我发布这个是因为 中发布的答案对我不起作用。我想将额外的数据参数从纸质按钮(在 dom-repeat 中)传递给 on-tap 事件处理程序。使用以下代码片段的结果提供了一个没有数据的 sub paper-material 元素。

使用:

<template is="dom-repeat" items="{{someParam}}>
  <paper-button on-tap="_handleTap" data-args="{{item}}">...</paper-button>
</template>

并处理:

var args = e.target.getAttribute('data-args').split(',');

e.target.dataset.args

两者都return<paper-material ...>...</paper-material>

这是怎么回事?为什么目标 return 点按的纸张按钮或其中的数据?!

经过一番修改后,发现目标上的 dataHost 属性 指向原始点击的元素。不知道为什么没有记录。它可能不可靠,但对我有用。

event.target.dataHost.args

更新: 上面的根本行不通

呃。还在偷懒。

更新: 结果你必须对数据属性进行驼峰式大小写。

event.target.dataHost.dataArgs

超级复杂和隐藏:-/

从模板实例访问数据的最有效方法是执行以下操作:

<template is="dom-repeat" items="[[someParam]]">
  <paper-button on-tap="_handleTap">...</paper-button>
</template>

...

_handleTap: function(e) {
  var model = e.model.item;
  // Do something
}

要绑定到像 data-* 这样的本机属性,您必须使用属性绑定 ($=)。至于事件重定向,您必须使用 Polymer.dom(event).localTarget 才能到达发出该事件的正确目标,在这种情况下,您的纸张按钮(rootTarget 也会 return 纸张-material).

这是我制作的一个工作示例。 http://jsbin.com/fehene/edit?html,output