在 Shiny 中具有一个事件处理程序的多个动作按钮?

3D0*_*D0G 4 r shiny

我想在一个页面上有可变数量的相同 actionButton()s,全部由一个 observeEvent() 函数处理。

例如,在表格的可变长度表格中,我希望每个内部表格都有一个按钮,链接到该表格的更多信息。

在标准 HTML 中,您可以使用一个简单的表单来完成此操作,您可以在其中使用隐藏的输入来指定内部表格编号,如下所示:

<form ...>
  <input id="table_number" type="hidden" value="1"/>
  <input type="submit" value="Examine"/>
</form>
Run Code Online (Sandbox Code Playgroud)

当按下按钮时,您可以检查隐藏的输入以查看它是哪一个。

有没有办法在 Shiny 中做到这一点?我想出的唯一解决方案是给每个 actionButton() 自己的 inputId。这需要为每个按钮单独使用observeEvent()。那些必须提前创建,施加最大数量的按钮。

3D0*_*D0G 10

我只花了几年时间,但现在我对这个问题有了更好的答案。您可以使用 JavaScript/jQuery 函数在文档中的每个按钮上放置一个点击事件处理程序,然后使用Shiny.onInputChange()函数将<button id="xxx"...已单击的按钮 ( )的 ID 传递给单个观察者你的闪亮代码。

使用 JavaScript/jQuery 在 Shiny 中的所有按钮的一个观察者中有一个完整的描述和代码示例