如何在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
相关产品推荐
相关产品推荐

