'在闪亮的应用程序中重置输入'按钮 [英] 'Reset inputs' button in shiny app

查看:16
本文介绍了'在闪亮的应用程序中重置输入'按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我闪亮的应用程序中实现"重置输入"按钮。

下面是一个仅有两个输入的示例,其中我使用更新函数将值设置回默认值:

library(shiny)

runApp(list(

  ui = pageWithSidebar(

    headerPanel("'Reset inputs' button example"),

    sidebarPanel(
      numericInput("mynumber", "Enter a number", 20),
      textInput("mytext", "Enter a text", "test"),
      tags$hr(),
      actionButton("reset_input", "Reset inputs")
    ),

    mainPanel(
      h4("Summary"),
      verbatimTextOutput("summary")
    )

  ),

  server = function(input, output, session) {

    output$summary <- renderText({
      return(paste(input$mytext, input$mynumber))
    })

    observe({
      input$reset_input
      updateNumericInput(session, "mynumber", value = 20)
      updateTextInput(session, "mytext", value = "test")
    })
  }

))
我想知道的是,是否还有一个函数可以将所有内容设置为默认值?这在有多个输入的情况下很有用。

此外,我不确定使用观察功能来检测操作按钮何时被点击是否是处理操作按钮的"正确方式"?

推荐答案

shiny中没有这样的函数,但是,这里有一种无需定义两次输入即可实现此目的的方法。诀窍是使用uiOutput并将要重置的输入包装在一个div中,该div的ID在每次按下重置按钮时都会更改为新的内容。

library(shiny)

runApp(list(

  ui = pageWithSidebar(

    headerPanel("'Reset inputs' button example"),

    sidebarPanel(
      uiOutput('resetable_input'),
      tags$hr(),
      actionButton("reset_input", "Reset inputs")
    ),

    mainPanel(
      h4("Summary"),
      verbatimTextOutput("summary")
    )

  ),

  server = function(input, output, session) {

    output$summary <- renderText({
      return(paste(input$mytext, input$mynumber))
    })

    output$resetable_input <- renderUI({
        times <- input$reset_input
        div(id=letters[(times %% length(letters)) + 1],
            numericInput("mynumber", "Enter a number", 20),
            textInput("mytext", "Enter a text", "test"))
    })

  }
))

这篇关于&#39;在闪亮的应用程序中重置输入&#39;按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆