2017-05-28 66 views
0

我在下面的模板行創建一個Shinyapp:sliderInput出現在側邊欄只有當選擇了選項卡

library(shinydashboard) 

sidebar <- dashboardSidebar(
    sidebarMenu(id="tabs", 
       menuItem("Tab1", tabName="Tab1", selected=TRUE), 
       menuItem("Tab2", tabName = "Tab2") 
), 

    conditionalPanel("input.tabs=='Tab1'", 
        fluidRow() 
        ), 
    conditionalPanel("input.tabs=='Tab2'", 
        fluidRow() 
        ) 
) 


body <- dashboardBody(
    tabItems(

    tabItem(tabName = "Tab1", 
      fluidRow(sliderInput("aa", "aa", value = 0.9, min = 0, max = 2, step=0.1)) 
    ), 
    tabItem(tabName = "Tab2", 
      fluidRow(navbarPage(id = 'ab', title = "", 
         tabPanel(title = "aa1", value = 'aa1', fluidRow()), 
         tabPanel(title = "aa2", value = 'aa2', fluidRow()))) 
    ))) 


ui = dashboardPage(
    dashboardHeader(title = "My tab"), 
    sidebar, 
    body 
) 

server = function(input, output) {} 

shinyApp(ui = ui, server = server) 

現在我想基本上,一個sliderInput應該出現在側面板只有當TabPanel = 'aa2'tabItem = 'Tab2'。因此,如果選擇TabPanel = 'aa1',用戶不應該看到sliderInput。

到目前爲止,我已經試過類似如下:然而與此

sidebar <- dashboardSidebar(
    sidebarMenu(id="tabs", 
       menuItem("Tab1", tabName="Tab1", selected=TRUE), 
       menuItem("Tab2", tabName = "Tab2") 
), 

    conditionalPanel("input.tabs=='Tab1'", 
        fluidRow() 
        ), 
    conditionalPanel("input.tabs=='Tab2'", 
        fluidRow(sliderInput("aa5", "aa", value = 0.9, min = 0, max = 2, step=0.1)) 
        ) 
) 

的sliderInput是兩個tabPanel = "aa1" & tabPanel = "aa2",這是我不想看到。

任何建議,我怎麼才能讓sliderInput只可見於tabPanel = "aa2"

感謝您的指示。

+0

你可以嘗試使用''從包shinyjs'功能hide'。這將從服務器端完成。你可以關注[this](http://deanattali.com/shinyjs/overview#demo)鏈接。 – SBista

回答

0

@SBista感謝您的指點。以下是更新的代碼。謝謝,

library(shinydashboard) 
library(shinyjs) 

sidebar <- dashboardSidebar(
    sidebarMenu(id="tabs", 
       menuItem("Tab1", tabName="Tab1", selected=TRUE), 
       menuItem("Tab2", tabName = "Tab2") 
), 

    conditionalPanel("input.tabs=='Tab1'", 
        fluidRow() 
        ), 
    conditionalPanel("input.tabs=='Tab2'", 
        fluidRow(useShinyjs(), 
        column(12, sliderInput("aa4", "aa", value = 0.9, min = 0, max = 2, step=0.1))) 
        ) 
) 


body <- dashboardBody(
    tabItems(

    tabItem(tabName = "Tab1", 
      fluidRow(sliderInput("aa", "aa", value = 0.9, min = 0, max = 2, step=0.1)) 
    ), 
    tabItem(tabName = "Tab2", 
      fluidRow(navbarPage(id = 'ab', title = "", 
         tabPanel(title = "aa1", value = 'aa1', fluidRow()), 
         tabPanel(title = "aa2", value = 'aa2', fluidRow()))) 
    ))) 


ui = dashboardPage(
    dashboardHeader(title = "My tab"), 
    sidebar, 
    body 
) 

server = function(input, output) { 

observe(toggle(id = "aa4", condition = ifelse(input$ab == 'aa2', TRUE, FALSE))) 

} 

shinyApp(ui = ui, server = server) 
相關問題