私の光沢のあるアプリはcheckboxGroupInput
、3 つの会社の名前を含む で始まります: A
、B
およびC
。またhidden
、それぞれが会社に対応する 3 つの数値入力もあります。潜在的な投資家は、投資したい会社の名前を選択し、投資したい金額を指定することができます。会社名をチェックすると、対応する数値入力が表示されます。また、会社名のチェックを外すと数値入力が消えます。
とcheckboxGroupInput
呼ばれcompany
ます。3 つのnumericInput
フィールドはそれぞれamountA
、 、amountB
と呼ばれ、amountC
すべて 内で生成されますuiOutput
。それらは のhidden
機能で隠されていますshinyjs
。
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
が表示されると、ボックスのチェックを外して非表示にすることはできません。どうすればこれを処理できますか?
上に貼り付けたコードは完全に機能します。どうもありがとうございました。