使用重置按钮重置并清除闪亮的文本输出
Reset and clear out Shiny text output using reset button
我正在创建一个计算器,它接受多个输入并在单击 'Calculate' 后打印计算结果。我还提供了一个重置按钮,可以成功地将输入值重置为默认值。
重置按钮还应该清除之前打印的输出(基本上我希望它看起来和你第一次打开应用程序时一模一样)。
下面是计算器的一个简化但仍然有效的示例。
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
div(id="form",
sidebarLayout(
sidebarPanel(
numericInput("x","X",0),
numericInput("y","Y",0)
),
mainPanel(
br(),
column(width=6,actionButton("calc", "Calculate")),
column(width=6,actionButton("reset", "Reset")),
br(),br(),br(),
textOutput("sum"))
)
))
# Define the server logic
server <- function(input, output) {
output$sum <- renderText({
req(input$calc)
isolate(paste("X + Y =", input$x + input$y))
})
observeEvent(input$reset, {
reset("form")
})
}
# Run the application
shinyApp(ui = ui, server = server)
我已经尝试了这里提供的一些方法来解决其他看似相似的问题,但我没有设法让它们起作用。我会提供一些我所做的例子,但此时我已经忘记了它们,我希望只有一些我忽略的明显、简单的答案。不过,我对 Shiny 还很陌生,所以如果能详细说明为什么可能的答案有效,我们也将不胜感激!
根据评论编辑。
我认为最简单的观察者是:
# two observers
server <- function(input, output) {
observeEvent(input$calc, {
output$sum <- renderText({
req(input$calc)
isolate(paste("X + Y =", input$x + input$y))
})
})
observeEvent(input$reset, {
output$sum <- renderText({
})
})
}
我正在创建一个计算器,它接受多个输入并在单击 'Calculate' 后打印计算结果。我还提供了一个重置按钮,可以成功地将输入值重置为默认值。
重置按钮还应该清除之前打印的输出(基本上我希望它看起来和你第一次打开应用程序时一模一样)。
下面是计算器的一个简化但仍然有效的示例。
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
div(id="form",
sidebarLayout(
sidebarPanel(
numericInput("x","X",0),
numericInput("y","Y",0)
),
mainPanel(
br(),
column(width=6,actionButton("calc", "Calculate")),
column(width=6,actionButton("reset", "Reset")),
br(),br(),br(),
textOutput("sum"))
)
))
# Define the server logic
server <- function(input, output) {
output$sum <- renderText({
req(input$calc)
isolate(paste("X + Y =", input$x + input$y))
})
observeEvent(input$reset, {
reset("form")
})
}
# Run the application
shinyApp(ui = ui, server = server)
我已经尝试了这里提供的一些方法来解决其他看似相似的问题,但我没有设法让它们起作用。我会提供一些我所做的例子,但此时我已经忘记了它们,我希望只有一些我忽略的明显、简单的答案。不过,我对 Shiny 还很陌生,所以如果能详细说明为什么可能的答案有效,我们也将不胜感激!
根据评论编辑。
我认为最简单的观察者是:
# two observers
server <- function(input, output) {
observeEvent(input$calc, {
output$sum <- renderText({
req(input$calc)
isolate(paste("X + Y =", input$x + input$y))
})
})
observeEvent(input$reset, {
output$sum <- renderText({
})
})
}