我有一个包含许多actionButtons的项目。有时它们通常出现在屏幕上,但它们不起作用。
当我使用Chrome的开发者工具检查发生了什么时,按钮上的类包括“闪亮绑定输入”,而不起作用的按钮不包括它们作为其类的一部分。
此类不是actionButton代码的一部分:
actionButton(inputId="A", label="OK")
# <button id="A" type="button" class="btn btn-default action-button">OK</button>
所以Shiny正在添加它。为了帮助调试这一点,了解为什么按钮会正常显示在屏幕上但没有将“闪亮绑定输入”添加到其类中将会很有帮助。我怀疑其中一个原因是重复的inputIds,但这不是我今天的错误。
---- ----编辑
如果这是多页代码项目中的一段代码,则可重现的示例很难。但是我发现了我的错误,毕竟它是重复的ID - 但在这种情况下,重复项是两个与非工作按钮无关的输出ID。他们后来处于相同的代码块中。
因此,至少有一个解决此问题的方法是:如果您的按钮不起作用,您可能在正在呈现的代码块中的某处有重复的输入或输出ID。
----编辑2 ----
现在我知道错误是什么,我可以提供一个例子。请注意,此处代码中的两个textOutput具有相同的ID。当您复制/粘贴并忘记更新ID时会发生这种情况。原样,此代码中的按钮不起作用。但修复了第二个textOutput中的id,一切都很好。另请注意,缺少任何类型的错误消息。
ui <- uiOutput("test_page")
server <-function(input, output, session) {
output$test_page <- renderUI(tagList(
actionButton("button", "OK"),
textOutput("test_output1"),
textOutput("test_output1")
))
observeEvent(input$button, {
print("button pressed")
output$test_output1 = renderText("button pressed")
output$test_output2 = renderText(input$button)
})
}
shinyApp(ui = ui, server = server)