'shinydashboard'未在'sidebar'中正确显示项目

时间:2017-05-25 04:01:35

标签: shiny

我使用Package“shinydashboard”创建了一个Shiny App,如下所示:

library(shinydashboard)
library(shiny)

sidebar <- dashboardSidebar(

  sidebarMenu(id="tabs",
              menuItem("ABC", tabName="ABC", icon=icon("line-chart"), selected=TRUE),
              menuItem("ABC1", tabName="ABC1", icon=icon("line-chart"), selected=FALSE)
  ),
 conditionalPanel("input.tabs == 'ABC'",
    fluidRow(
        column(11, offset = 1, h5((' Note')))
      )
    ),
 conditionalPanel("input.tabs == 'ABC1'",
    fluidRow(
        column(11, offset = 1, style = "height:20px; color:rgb(30,144,255);", h1((' Update')))
      )
    ))

body <- dashboardBody(
  tabItems(
    tabItem(tabName = "ABC",br())

    ),
    tabItems(
    tabItem(tabName = "ABC1",br())

    )
  )


ui = dashboardPage(
  dashboardHeader(title = "ABC"),
  sidebar,
  body
)

server = function(input, output){}

shinyApp(ui = ui, server = server)

但是我注意到一种奇怪的行为,当我运行App时,最初“input.tabs =='ABC'”中的注释'Note'不可见。但是,当我点击“input.tabs =='ABC1'”然后点击“ABC”时,“注释”注释变为可见。

有人可以指出我在上面代码中出错了吗?

任何帮助都将受到高度赞赏。

谢谢,

1 个答案:

答案 0 :(得分:0)

我们似乎在shinydashboard的最新版本中引入了此错误。抱歉!我会尽快修复它。您可以在此处跟踪进度:https://github.com/rstudio/shinydashboard/issues/214

更新(2017年6月9日):现在已在shinydashboard的开发版本上修复此问题。如果从github安装shinydashboard,原始代码应该运行正常:

devtools::install_github("rstudio/shinydashboard")

与此同时,还有以下几点:

  • 您不需要使用selected = FALSE
  • 如果您要开始选择的menuItem()是第一个(如上面发布的示例中所示),请同时删除selected = TRUE,您的问题就会消失。这只是让您的应用现在正常工作的解决方法。当这个错误得到解决时,第一个selected = TRUE中只有menuItem()或没有任何区别。
  • 现在更常见的解决方法(无论您想要选择哪个menuItem()都有效)是使用动态侧边栏菜单:
library(shinydashboard)
library(shiny)

sidebar <- dashboardSidebar(

  sidebarMenuOutput("menu"),
  conditionalPanel("input.tabs == 'ABC'",
    fluidRow(
      column(11, offset = 1, h5((' Note')))
    )
  ),
  conditionalPanel("input.tabs == 'ABC1'",
    fluidRow(
      column(11, offset = 1, style = "height:20px; color:rgb(30,144,255);", h1((' Update')))
    )
  ))

body <- dashboardBody(
  tabItems(
    tabItem(tabName = "ABC",br())

  ),
  tabItems(
    tabItem(tabName = "ABC1",br())

  )
)


ui = dashboardPage(
  dashboardHeader(title = "ABC"),
  sidebar,
  body
)

server = function(input, output){
  output$menu <- renderMenu({
    sidebarMenu(id="tabs",
      menuItem("ABC", tabName="ABC", icon=icon("line-chart"), selected=TRUE),
      menuItem("ABC1", tabName="ABC1", icon=icon("line-chart"))
    )
  })
}

shinyApp(ui = ui, server = server)