如何在Polymer 2.0 on-tap功能中传递参数?

时间:2017-04-19 20:01:44

标签: javascript polymer

我正在使用Polymer 2.0,我有dom-repeat用于不同的待办事项卡。我想要做的是点击它时取出卡。

所以我尝试了这个使用on-tap=deleteNote([[index]])索引的dom-repeat。但是Polymer不执行该功能。

我做错了什么?

4 个答案:

答案 0 :(得分:12)

另一种解决方案可能是dataset中的event.target对象。您可以使用data-前缀

定义属性
<div on-tap="doSomething" data-item$="[[item]]"></div>

doSomething()监听器中,您可以获得dataset对象:

doSomething(event) {
  const item = event.target.dataset.item;
  ...
}

答案 1 :(得分:3)

您可以通过事件参数的model属性访问模型。

因此,您可以从event.model.index

访问索引

答案 2 :(得分:-1)

嗯,我知道你不能。互联网上有很多关于此的讨论。

当然,有一种方法可以将参数传递给函数。您可以在元素属性中保存[[index]],然后在需要时获取属性。

示例:

<div on-tap='_deleteNote' indexed$='[[index]]'>

然后在脚本中:

_deleteNote(e) {
  var index = e.target.getAttribute('indexed');
  ...
}

获得index后,您就可以随意使用它。

如果您没有在Polymer 2.0中使用混合元素,请不要忘记扩展Polymer手势。

class Foo extends Polymer.GestureEventListeners(Polymer.Element) {}

有关它的更多信息:https://www.polymer-project.org/2.0/docs/devguide/gesture-events#using-gesture-events

什么是混合元素:https://www.polymer-project.org/2.0/docs/devguide/hybrid-elements

答案 3 :(得分:-2)

on-tap似乎没有在Polymer 2.0中实现。如果您改为使用on-click,那么它将会起作用。

编辑:见下面的评论。