能否同时使用自定义动作与预定义动作?例如在onClick中绑定select与自定义JS函数
如何同时结合预定义select动作与自定义JS函数
当然可以同时实现预定义的select点击动作和自定义JS逻辑!你之前直接拼接字符串的写法行不通,正确的做法是在同一个自定义JS函数里手动触发预定义的select动作,再执行你的额外逻辑。
具体实现步骤
- 在自定义函数中,通过表格实例调用预定义的
select方法(这里以Shiny常用的DT包为例,不同表格库的方法名可能略有差异); - 接着执行你自己的自定义逻辑,比如判断目标列、弹窗提示、向Shiny发送输入值等。
修改后的示例代码
onClick = JS("function(rowInfo, column) { // 先触发预定义的select动作:选中当前行 this.select(rowInfo.index); // 你的自定义逻辑:仅处理'details'列的点击 if (column.id !== 'details') { return } // 显示行详情弹窗 window.alert('Details for row ' + rowInfo.index + ':\\n' + JSON.stringify(rowInfo.values, null, 2)) // 向Shiny发送点击事件数据 if (window.Shiny) { Shiny.setInputValue('show_details', { index: rowInfo.index + 1 }, { priority: 'event' }) } }")
关键说明
this在这里指代表格的实例对象,this.select(rowInfo.index)就是调用DT内置的行选择方法,和你直接写onClick = "select"的效果完全一致;- 你可以根据需求调整顺序:如果想先执行自定义逻辑再选中行,把
this.select(...)放到自定义代码之后即可; - 如果使用的是其他表格组件,只需要把
this.select(rowInfo.index)替换成对应组件的预定义选择方法就行。
内容的提问来源于stack exchange,提问作者Odrai
相关产品推荐
相关产品推荐

