2017-11-28 19 views
0

ShinyBS 및 Shinyjs 패키지를 사용하여 Shiny App을 제작 중이며 다른 bscollapse 패널의 라디오 버튼 입력에 따라 bscollapse 패널을 숨기거나 표시하고 싶습니다.Shiny의 bsCollapse 패널 표시/숨기기

Parent1에서 "AAA"또는 "BBB"옵션을 선택한 경우 Parent2에 "AAAA"및 "BBBB"collapsePanels 만 표시하려고합니다.

Parent1에서 "CCC"또는 "DDD"옵션을 선택한 경우 Parent2에 "CCCC"및 "DDDD"collapsePanels 만 표시하려고합니다.

shinyjs 패키지에서 show() 및 hide() 명령을 사용하고 있지만 제대로 작동하지 않습니다. "AAA"또는 "BBB"를 선택하면 Parent2에 아무 것도 나타나지 않습니다. 이는 내가 원하지 않는 것입니다. 난 그냥이 conditionalPanel 대신 쇼()와 숨기기()를 사용하여 작업있어

library(shiny) 
library(shinyBS) 
library(shinyjs) 

server = function(input, output, session) { 

observeEvent(input$TypeRadio,{ 
if (input$TypeRadio == "AAA" || input$TypeRadio == "BBB") 
    shinyjs::show("collapse1") 
    shinyjs::hide("collapse2") 
}) 

observeEvent(input$TypeRadio,{ 
if (input$TypeRadio == "CCC" || input$TypeRadio == "DDD") 
    shinyjs::show("collapse2") 
    shinyjs::hide("collapse1")}) 
} 


ui = fluidPage(
shinyjs::useShinyjs(), 

bsCollapse(id = "collapseExample", multiple = FALSE, 
bsCollapsePanel("Parent1","", 

       radioButtons("TypeRadio", "", 
          choices = list("AAA" = "AAA", 
              "BBB" = "BBB", 
              "CCC" = "CCC", 
              "DDD" = "DDD"), 
          inline = FALSE)), 


bsCollapsePanel("Parent2","", 

       bsCollapse(id = "collapse1", 
         bsCollapsePanel("AAAA", ""), 
         bsCollapsePanel("BBBB", "")), 

       bsCollapse(id = "collapse2", 
         bsCollapsePanel("CCCC", ""), 
         bsCollapsePanel("DDDD", "")) 

         ) 
)     
) 
shinyApp(ui = ui, server = server) 
+0

확인 : 아래

문제를 재현하는 코드이다. 하지만 show/hide()를 사용하여 왜 처음에는 작동하지 않는지 궁금합니다. 어떤 의견이라도 고맙게 여기겠다, 고마워! – ZedzDeD

+0

ifelse()가 작동하는 방식이라고 생각합니다. 왼쪽 입력은 입력으로 값의 유효성을 검사 할 때 검사됩니다. 아래 내 대답을 참조하십시오, 나는 원하는대로 작동하도록 코드를 약간 변경했습니다. – Sagar

답변

0
library(shiny) 
library(shinyBS) 
library(shinyjs) 

if(interactive()){ 
    shinyApp(
    ui <- fluidPage(
     useShinyjs(), 
     bsCollapse(id = "collapseExample", multiple = FALSE, 
       bsCollapsePanel("Parent1","", 
           radioButtons("TypeRadio", "", 
               choices = list("AAA" = "AAA", 
                  "BBB" = "BBB", 
                  "CCC" = "CCC", 
                  "DDD" = "DDD"), 
               inline = FALSE)), 
       bsCollapsePanel("Parent2","", 
           bsCollapse(id = "collapse1", 
              bsCollapsePanel("AAAA", ""), 
              bsCollapsePanel("BBBB", "")), 

           bsCollapse(id = "collapse2", 
              bsCollapsePanel("CCCC", ""), 
              bsCollapsePanel("DDDD", "")) 
           ) 
    ) 
    ), 

    server = function(input, output, session){ 

     observeEvent(input$TypeRadio,{ 
     if("AAA" == input$TypeRadio | "BBB" == input$TypeRadio){ 
      shinyjs::show("collapse1") 
      shinyjs::hide("collapse2") 
     } 

     if("CCC" == input$TypeRadio | "DDD" == input$TypeRadio){ 
      shinyjs::hide("collapse1") 
      shinyjs::show("collapse2") 
     } 
     }) 

    } 
) 
} 
+0

감사합니다 !! 마찬가지로 간단하게 :) – ZedzDeD