我的閃亮應用程序以checkboxGroupInput
開頭,其中包含三家公司的名稱:A
,B
和C
。它還有3個hidden
數字輸入,每個對應一個公司。潛在投資者可以選擇他們希望投資的公司的名稱,並指定他們願意投資的金額。當檢查公司的名稱時,顯示相應的數字輸入。另外,當公司名稱未選中時,數字輸入消失。顯示和隱藏基於複選框的輸入GroupGroupInput
checkboxGroupInput
被稱爲company
。該3 numericInput
字段分別被稱爲amountA
,amountB
和amountC
,並且全部在uiOutput
內生成。它們隱藏着shinyjs
的hidden
功能。
library(shiny)
library(shinyjs)
library(magrittr)
ui <- fluidPage(
useShinyjs(),
checkboxGroupInput(inputId = "company", label = "Select a company", choices = LETTERS[1:3]),
uiOutput(outputId = "amounts")
)
server <- function(input, output){
company_names <- LETTERS[1:3]
num_ids <- paste0("amount", LETTERS[1:3])
output$amounts <- renderUI({
num_inputs <- lapply(1:3, function(i){
numericInput(inputId = num_ids[i], label = paste0("Investment in ", company_names[i]), value = 0, min = 0, max = 5000)
}) %>% tagList
shinyjs::hidden(num_inputs)
})
observeEvent(eventExpr = input$company, handlerExpr = {
if(length(input$company) == 0){
for(i in num_ids){
shinyjs::hide(id = i)
}
} else {
for(i in input$company){
shinyjs::toggle(id = paste0("amount", i), condition = input$company)
}
}
})
}
shinyApp(ui = ui, server = server)
與我的應用程序的問題是,checkboxGroupInput
和numericInput
場之間的預期動力學按預期不工作。例如,一旦顯示numericInput
,就不能通過取消選中框來隱藏它。我該如何處理?
上面粘貼的代碼功能齊全。非常感謝你。
我顛倒了'if'語句和'for'循環,並且感謝您明確了爲什麼使用'observe'而不是'observeEvent'。 – SavedByJESUS