如何清除textInput框中闪亮的值

时间:2016-03-29 14:16:49

标签: r shiny

我有一个名为addbtn的actionButton。单击此按钮时,它将从textInput框中获取输入并创建其他textInput' s。

当我单击addbtn并且textInput框创建时,txtInput框中的值需要清除,以便我可以添加更多textInput框。

这是代码:

UI:

ibrary(shiny)

  shinyUI(

    # Use a fluid Bootstrap layout
    fluidPage(    


      # Generate a row with a sidebar
      sidebarLayout(      


        # Define the sidebar with one input
        sidebarPanel(
          sliderInput("capacity", "Current Capacity:", 
                      min=0, max=100, value=10),
          c(list(
            textInput("service", "Application Component Name", ""),
            actionButton("addbtn", "Add Component"))),
            #lapply(seq(10), function(i) uiOutput(paste0("ui", i)))

            br(),
            br(), 
            br(),
            br(),
            br(),
          actionButton("calcbtn", "Calculate Projection")




        ),



        # Create a spot for the barplot
        mainPanel(
          textInput("inputWork","Volume", width="200px"),
          textInput("inputGrowth","Growth Rate", width="100px"),
          lapply(seq(10), function(i) uiOutput(paste0("ui", i)))
          #tags$p("Web"),
          #verbatimTextOutput("input_type_text")

        )

      )
    )
  )

server <- function(input, output) 
{
  observeEvent(input$addbtn, {
    n <- isolate(input$addbtn)
    if (n == 0) return()

    # create n-th pair of text input and output
    output[[paste0("ui", n)]] <- renderUI(
      list(textInput(paste0("textin", n), isolate(input$service)),
           textOutput(paste0("textout", n))))
    updateTextInput(input$service, "Application Component Name", value="")
  })
  }

使用此代码,我收到了以下错误:

Warning: Error in $: $ operator is invalid for atomic vectors
Stack trace (innermost first):
    64: updateTextInput
    63: observeEventHandler [C:\shiny\bcl/server.R#11]
     1: shiny::runApp
ERROR: [on_request_read] connection reset by peer

1 个答案:

答案 0 :(得分:1)

updateTextInput

中的所有问题

在帮助中

  

参数

     

session会话对象传递给赋予shinyServer的函数。

     

inputId输入对象的id。

     

label要为输入对象设置的标签。

     

value要为输入对象设置的值。

所以你需要服务器:

shinyServer(function(input, output,session) {

  observeEvent(input$addbtn, {
    n <- isolate(input$addbtn)
    if (n == 0) return()

    # create n-th pair of text input and output
    output[[paste0("ui", n)]] <- renderUI(
      list(textInput(paste0("textin", n), isolate(input$service)),
           textOutput(paste0("textout", n))))
    updateTextInput(session,"service", "Application Component Name", value="")
  })
  })

如果您不想更改label的{​​{1}},可以将其放入更新:  textInput