有条件的任何方式灰色面板在Shiny中?

时间:2018-06-08 01:03:23

标签: r shiny shinyjs

我正在使用基本的Shiny UI模板,用户必须选择某个按钮才能输入应用。现在我使用了一个conditionalPanel(),但是输入按钮没有完全消失,是否可以将它们变灰?

这里有以下代码:

  library(shiny)
  library(shinyjs)
 ui<-fluidPage(

 headerPanel("Title"),
 sidebarPanel(
 radioButtons("toggle", "Some Buttons",
             choices = list("Choice 1" = 1,
                           "Choice 2" = 2),
            selected = "Choice 2")),
conditionalPanel(
 condition = "input.toggle % 2 == 0",
 sidebarPanel(radioButtons("otherButtons","Buttons",
              choices = list("Choice 1"=1,
                            "Choice 2"=2)),
 radioButtons("moreButtons","Buttons",
              choices = list("Choice 1"= 1,
                            "Choice 2" = 2))
  ),
  "Some Text"
 )


 )




server<-function(input,output,session){



 }

shinyApp(ui,server)

1 个答案:

答案 0 :(得分:0)

也许你可以试试这个。当您在第一个面板中选择选项1时,您将无法在第二个面板中选择任何内容。

ui <- fluidPage(

  headerPanel("Title"), shinyjs::useShinyjs(),

  sidebarPanel(id = "mySideBar",
               radioButtons("toggle", "Some Buttons",
                            choices = list("Choice 1" = 1,
                                           "Choice 2" = 2),
                            selected = "Choice 2")),

      sidebarPanel(id = "mySideBar2",
        radioButtons("otherButtons","Buttons",
                                choices = list("Choice 1"=1,
                                               "Choice 2"=2)),
                   radioButtons("moreButtons","Buttons",
                                choices = list("Choice 1"= 1,
                                               "Choice 2" = 2))

)   
)


server<-function(input,output,session){

  shinyjs::onclick("advanced2",
                   shinyjs::toggle(id = "advanced2", anim = TRUE))

  observeEvent(input$toggle, {
    if(input$toggle == "1"){
      shinyjs::disable(id = "mySideBar2")
    } else {
      shinyjs::enable(id = "mySideBar2")
    }
  })

}

shinyApp(ui,server)