R在后台加载隐藏的侧栏(使用bs4Dash包)

R在后台加载隐藏的侧栏(使用bs4Dash包),r,shiny,shinydashboard,bs4dash,R,Shiny,Shinydashboard,Bs4dash,我用bs4Dash构建了一个R闪亮的仪表板。这个软件包允许我在右侧为输入选择器创建一个栏,这样我就可以使用左侧菜单进行导航。应用程序启动时,右侧bs4DashControlbar隐藏。问题是,如果我在服务器端创建一个选择器,并在ui中使用uiOutput(),它不会呈现-即,我的两个选择器没有加载。我发现这种情况是因为控制栏一开始是隐藏的(我想要)。我试图让控制栏中的选择器始终呈现为可见 请参阅下面我的尝试。请注意,当“controlbar_collapsed”行未注释时,我的选择器加载正常。但

我用bs4Dash构建了一个R闪亮的仪表板。这个软件包允许我在右侧为输入选择器创建一个栏,这样我就可以使用左侧菜单进行导航。应用程序启动时,右侧bs4DashControlbar隐藏。问题是,如果我在服务器端创建一个选择器,并在ui中使用uiOutput(),它不会呈现-即,我的两个选择器没有加载。我发现这种情况是因为控制栏一开始是隐藏的(我想要)。我试图让控制栏中的选择器始终呈现为可见

请参阅下面我的尝试。请注意,当“controlbar_collapsed”行未注释时,我的选择器加载正常。但是,我也不希望控制栏在加载时可见,我更希望它总是在更新,即使有人隐藏了控制栏。我试图修复的内容在底部附近被注释掉了。我尝试使用带有suspendWhenHidden的输出选项。我认为这是一条正确的道路,但我无法让它发挥作用。还是有更好的办法

library(shiny)
library(bs4Dash)

shiny::shinyApp(
  ui = bs4DashPage(
    old_school = FALSE,
    sidebar_min = TRUE,
    sidebar_collapsed = FALSE,
    #controlbar_collapsed = FALSE,  ###Uncomment this line and it loads just fine
    controlbar_overlay = TRUE,
    title = "Basic Dashboard",
    navbar = bs4DashNavbar(),
    sidebar = bs4DashSidebar(),
    controlbar = bs4DashControlbar(inputId = "Controller",
      sliderInput("slider", "Number of observations:", 1, 100, 50),
      uiOutput("TimeFrame"),
      uiOutput("Metrics")
    ),
    footer = bs4DashFooter(),
    body = bs4DashBody()
  ),
  server = function(input, output) {
    output$TimeFrame <- renderUI({selectInput("TimeFrame", "Select Time Frame:", 
                                              c("Last 01 Wks", "Last 04 Wks", "Last 13 Wks", "Last 52 Wks", "Year to Date"), 
                                              multiple=FALSE)})
    output$Metrics <- renderUI({selectInput("Metrics", "Select a Metric:", 
                                            c("Metric A", "Metric B"), 
                                            multiple=FALSE)})
    
    #outputOptions(output, "Controller", suspendWhenHidden = FALSE)  #This is what I tried
  }
)
库(闪亮)
图书馆(bs4Dash)
shinyApp(
ui=bs4DashPage(
老派,
侧边栏_min=TRUE,
侧边栏_=FALSE,
#controlbar_collapsed=FALSE,####取消对此行的注释,它将正常加载
controlbar_overlay=TRUE,
title=“基本仪表板”,
navbar=bs4DashNavbar(),
边栏=BS4DASHIDEBAR(),
controlbar=bs4DashControlbar(inputId=“Controller”,
sliderInput(“滑块”,“观察次数:”,1100,50),
uiOutput(“时间范围”),
uiOutput(“指标”)
),
footer=bs4DashFooter(),
body=bs4DashBody()
),
服务器=功能(输入、输出){
输出$TimeFrame
库(闪亮)
图书馆(shinyjs)
图书馆(bs4Dash)
shinyApp(
ui=fluidPage(
useShinyjs(),
bs4DashPage(
老派,
侧边栏_min=TRUE,
侧边栏_=FALSE,
#controlbar_collapsed=FALSE,####取消对此行的注释,它将正常加载
controlbar_overlay=TRUE,
title=“基本仪表板”,
navbar=bs4DashNavbar(),
边栏=BS4DASHIDEBAR(),
controlbar=bs4DashControlbar(inputId=“Controller”,
sliderInput(“滑块”,“观察次数:”,1100,50),
shinyjs::hidden(div(id=“MyPanel”,
uiOutput(“时间范围”),
uiOutput(“指标”))
),
footer=bs4DashFooter(),
body=bs4DashBody()
)),
服务器=功能(输入、输出){

输出$TimeFrame谢谢!就在这里。另外,shinyjs包+1。我现在还不熟悉它。看起来它有很多有用的功能。
library(shiny)
library(shinyjs)
library(bs4Dash)

shiny::shinyApp(
  ui = fluidPage(
    useShinyjs(),
    bs4DashPage(
      old_school = FALSE,
      sidebar_min = TRUE,
      sidebar_collapsed = FALSE,
      # controlbar_collapsed = FALSE,  ###Uncomment this line and it loads just fine
      controlbar_overlay = TRUE,
      title = "Basic Dashboard",
      navbar = bs4DashNavbar(),
      sidebar = bs4DashSidebar(),
      controlbar = bs4DashControlbar(inputId = "Controller",
                                     sliderInput("slider", "Number of observations:", 1, 100, 50),
                                     shinyjs::hidden(div(id = "MyPanel",
                                                         uiOutput("TimeFrame"),
                                                         uiOutput("Metrics")))
      ),
      footer = bs4DashFooter(),
      body = bs4DashBody()
    )),
  server = function(input, output) {
    output$TimeFrame <- renderUI({selectInput("TimeFrame", "Select Time Frame:", 
                                              c("Last 01 Wks", "Last 04 Wks", "Last 13 Wks", "Last 52 Wks", "Year to Date"), 
                                              multiple=FALSE)})
    output$Metrics <- renderUI({selectInput("Metrics", "Select a Metric:", 
                                            c("Metric A", "Metric B"), 
                                            multiple=FALSE)})
    
    observe({
      if (input$Controller) {
        shinyjs::show("MyPanel")
      } else {
        shinyjs::hide("MyPanel")
      }
    })
    # outputOptions(output, "Controller", suspendWhenHidden = FALSE)  #This is what I tried
  }
)