You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Polymer的dom-repeat中为点击事件函数传递参数

解决dom-repeat中给点击事件传递参数的问题

嘿,我来帮你搞定这个问题!你提到的直接在on-click里写_test({{data.id_Mission}})的写法在Polymer框架里是行不通的,不过有两种很方便的实现方式可以达到你的需求:

方法1:利用元素的data-*属性传递参数

你可以把需要传递的参数存到触发点击事件的元素的自定义data-属性里,然后在事件函数中通过事件对象获取:

修改模板代码:

<template is="dom-repeat" items="{{tableData}}" as="data">
  <tr>
    <td class="link" on-click="_test" data-mission-id="{{data.id_Mission}}">{{data.id_Mission}}</td>
    <td>{{data.nom}}</td>
    <td>{{data.resume}}</td>
  </tr>
</template>

然后在你的_test函数中读取参数:

_test(event) {
  // 通过dataset获取data-mission-id的值,注意这里会自动转为驼峰命名
  const missionId = event.currentTarget.dataset.missionId;
  // 接下来就可以用missionId做你需要的操作啦
  console.log('点击的任务ID:', missionId);
}

方法2:通过事件的model属性获取当前项数据

因为你用了dom-repeat,触发事件的元素会自动绑定当前循环项的model,你可以直接从事件对象里拿到整个data对象:

模板代码不需要改,保持你原来的写法就行:

<template is="dom-repeat" items="{{tableData}}" as="data">
  <tr>
    <td class="link" on-click="_test">{{data.id_Mission}}</td>
    <td>{{data.nom}}</td>
    <td>{{data.resume}}</td>
  </tr>
</template>

然后在_test函数中获取参数:

_test(event) {
  // 获取当前循环的data对象
  const currentData = event.model.data;
  const missionId = currentData.id_Mission;
  // 或者直接用model.get方法(适配不同Polymer版本)
  // const missionId = event.model.get('id_Mission');
  console.log('点击的任务ID:', missionId);
}

这两种方法都能完美实现你传递参数的需求,其中第二种方法更贴合dom-repeat的特性,不需要额外添加属性,推荐优先使用~

内容的提问来源于stack exchange,提问作者NeitoFR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:42:26