2017-11-28 10 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

OK:以下

は、問題を再現するためのコードです。しかし、私は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

関連する問題