我的情况如下:我有一个动作按钮(下一个)和一些单选按钮.每次,我单击动作按钮,不应选择单选按钮,输入值,例如input $ radio应重置为NULL(如开头).我在服务器文件中的方法如下:
observeEvent(input$Next, {
updateRadioButtons(session, "choice", label = "", choices = list("A" = 1, "B" = 2, "C" = 3), selected = FALSE)
})
Run Code Online (Sandbox Code Playgroud)
这适用于我们称之为布局.每次按下按钮,都不再显示之前的选择.但是,输入$选项(从单选按钮输入)仍然具有与以前相同的值.但是,我想将它重置为NULL,因为我在单选按钮后面有一些条件面板,只有在输入$ choice!= null时才触发.我非常感谢任何帮助!
您可以从客户端(浏览器)端自行覆盖该值.
有一个inbuild函数,用于将各种值分配给input变量,该变量被调用Shiny.onInputChange.这是一个JavaScript函数,用于将数据(在浏览器中选择的内容)发送到R会话.这样,您可以将null(等效于R的JavaScript NULL)分配给input您想要的变量,从而"重置"它.
当然,你需要从R服务器触发客户端,这是由a完成的customMessageHandler,就像对应的那样onInputChange.它在客户端安装一个侦听器,可以处理发送给客户端的消息.
以下是如何执行此操作的简短示例:
library(shiny)
ui <- fluidPage(
actionButton("Next", "Next"),
radioButtons("choice", label = "", choices = list("A" = 1, "B" = 2, "C" = 3), selected = character(0)),
textOutput("status"),
tags$script("
Shiny.addCustomMessageHandler('resetValue', function(variableName) {
Shiny.onInputChange(variableName, null);
});
")
)
server <- function(input, output, session){
output$status <- renderText({input$choice})
observeEvent(input$Next, {
updateRadioButtons(session, "choice", selected = character(0))
session$sendCustomMessage(type = "resetValue", message = "choice")
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)