【发布时间】:2017-02-04 01:10:03
【问题描述】:
我想在一个页面上拥有可变数量的相同 actionButton(),全部由一个 observeEvent() 函数处理。
例如,在一个可变长度的表格表格中,我希望每个内部表格都有一个按钮,可以链接到该表格的更多信息。
在标准 HTML 中,您可以使用简单的表单来执行此操作,其中使用隐藏的输入来指定内部表格编号,如下所示:
<form ...>
<input id="table_number" type="hidden" value="1"/>
<input type="submit" value="Examine"/>
</form>
当一个按钮被按下时,您可以检查隐藏的输入以查看它是哪一个。
有没有办法在 Shiny 中做到这一点?我想出的唯一解决方案是给每个 actionButton() 它自己的 inputId。这需要每个按钮都有一个单独的 observeEvent()。这些必须提前创建,并强制设置最大数量的按钮。
【问题讨论】:
-
有一个
submitButton也有光泽shiny.rstudio.com/gallery/submitbutton-demo.html -
@PorkChop - 感谢您的链接。我忘记了这个。但不幸的是,
submitButton会捕获整个页面上的所有事件,直到您单击它为止。在标准 HTML 中,它只会是该按钮的<form>中的事件,并且您可以在一个页面上有多个表单。我已经意识到我正在寻找的只是一个actionButton,它带有一个可以在创建按钮时分配并在按下按钮时返回的值字段。相反,actionButton返回它被点击的次数。 -
您可以将所有按钮绑定到一个事件,
eventReactive或observeEvent请注意,这些按钮内部可以包含多个事件,以逗号分隔。 shiny.rstudio.com/reference/shiny/latest/observeEvent.html -
要求多个按钮具有不同的 id 似乎与 Shiny 不喜欢有两个具有相同 id 的输入对象有关。它忽略了除第一个之外的所有内容。我想知道这是 javascript/文档对象模型限制还是 Shiny 特有的?
-
它不是
shiny,它不喜欢具有相同 id 的输入,这是html在一个页面上具有唯一的id的标准