如何在点击Knockout表格行时将JSON中的ID传入函数
解决Knockout表格行点击获取对应ID的问题
你其实已经做对了关键的一步——通过bind($data)把当前行的数据对象传递给了redirectDetails函数,现在只需要从这个传入的对象里提取ID就可以了,分两种情况处理:
情况1:ID是普通属性(非可观察对象)
如果你的mainData里的每条数据是普通JS对象(比如直接从JSON解析而来,没有用Knockout的observable包装),那么直接访问data.ID就能拿到ID值:
function redirectDetails(data) { const rowId = data.ID; alert(`当前点击行的ID是:${rowId}`); // 这里可以添加你的跳转逻辑,比如: // window.location.href = `/detail-page?id=${rowId}`; }
情况2:ID是Knockout可观察对象
如果你的ID是用ko.observable()定义的响应式属性,那么需要调用无参的ID()来获取它的当前值:
function redirectDetails(data) { const rowId = data.ID(); alert(`当前点击行的ID是:${rowId}`); // 跳转逻辑示例 }
可选:直接在绑定中传递ID参数
如果你不想传递整个数据对象,也可以直接在click绑定里把ID作为参数传进去,代码会更直观:
普通ID属性的写法:
<tr style="cursor:pointer;" data-bind="click: () => redirectDetails($data.ID)">
可观察ID属性的写法:
<tr style="cursor:pointer;" data-bind="click: () => redirectDetails($data.ID())">
对应的函数就可以直接接收ID参数:
function redirectDetails(rowId) { alert(`当前点击行的ID是:${rowId}`); }
最后检查一下你的mainData数组中的每个元素是否确实包含ID属性,这是能正确获取值的前提哦~
内容的提问来源于stack exchange,提问作者Bernard Polman
相关产品推荐
相关产品推荐

