我有一个名为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
答案 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