这个
SO question
,显示如何使输入无效。这样,解决方案变成:
ui <- fluidPage(
tags$script("
Shiny.addCustomMessageHandler('resetValue', function(variableName) {
Shiny.onInputChange(variableName, null);
});
"),
div(textInput("x", "Text"), id = "killme"),
actionButton("del", "Delete"),
verbatimTextOutput("out")
)
server <- function(input, output, session) {
output$out <- renderPrint(req(input$x))
observeEvent(input$del, {
removeUI("#killme")
session$sendCustomMessage("resetValue", "x")})
}
shinyApp(ui, server)
不过,谢谢你的回答,因为只有通过讨论,我才能使我的问题更清楚,并能找到正确的解决办法。
简式使用
library(shinyjs)
:
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(debug = TRUE),
div(textInput("x", "Text"), id = "killme"),
actionButton("del", "Delete"),
verbatimTextOutput("out")
)
server <- function(input, output, session) {
output$out <- renderPrint(req(input$x))
observeEvent(input$del, {
removeUI("#killme")
runjs('Shiny.onInputChange("x", null)')
})
}
shinyApp(ui, server)