动态侧边栏菜单 R Shiny
Dynamic sidebar menu RShiny
我的仪表板有问题。
我想创建一个动态侧边栏菜单,但默认情况下,菜单项不起作用。用户必须点击它才能显示它。我找到了这个问题的例子
https://github.com/rstudio/shinydashboard/issues/71
但解决方案不起作用。
如果你有想法...提前谢谢你
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic sidebar"),
dashboardSidebar(
sidebarMenuOutput("menu")
),
dashboardBody(tabItems(
tabItem(tabName = "dashboard", h2("Dashboard tab content"))
))
)
server <- function(input, output) {
output$menu <- renderMenu({
sidebarMenu(id="mytabs",
menuItem("Menu item", tabName="dashboard", icon = icon("calendar"))
)
})
}
shinyApp(ui, server)
这是使用 updateTabItems
的解决方案。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic sidebar"),
dashboardSidebar(
sidebarMenu(id="mytabs",
sidebarMenuOutput("menu")
)
),
dashboardBody(tabItems(
tabItem(tabName = "dashboard", h2("Dashboard tab content"))
))
)
server <- function(input, output, session) {
output$menu <- renderMenu({
sidebarMenu(
menuItem("Menu item", tabName="dashboard", icon = icon("calendar"))
)
})
isolate({updateTabItems(session, "mytabs", "dashboard")})
}
shinyApp(ui, server)
要扩展到动态菜单你可以看这个例子。
编辑:我认为 isolate
不是必需的,但我喜欢以一种提高代码可读性的方式放置它
我的仪表板有问题。 我想创建一个动态侧边栏菜单,但默认情况下,菜单项不起作用。用户必须点击它才能显示它。我找到了这个问题的例子 https://github.com/rstudio/shinydashboard/issues/71 但解决方案不起作用。 如果你有想法...提前谢谢你
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic sidebar"),
dashboardSidebar(
sidebarMenuOutput("menu")
),
dashboardBody(tabItems(
tabItem(tabName = "dashboard", h2("Dashboard tab content"))
))
)
server <- function(input, output) {
output$menu <- renderMenu({
sidebarMenu(id="mytabs",
menuItem("Menu item", tabName="dashboard", icon = icon("calendar"))
)
})
}
shinyApp(ui, server)
这是使用 updateTabItems
的解决方案。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Dynamic sidebar"),
dashboardSidebar(
sidebarMenu(id="mytabs",
sidebarMenuOutput("menu")
)
),
dashboardBody(tabItems(
tabItem(tabName = "dashboard", h2("Dashboard tab content"))
))
)
server <- function(input, output, session) {
output$menu <- renderMenu({
sidebarMenu(
menuItem("Menu item", tabName="dashboard", icon = icon("calendar"))
)
})
isolate({updateTabItems(session, "mytabs", "dashboard")})
}
shinyApp(ui, server)
要扩展到动态菜单你可以看这个例子。
编辑:我认为 isolate
不是必需的,但我喜欢以一种提高代码可读性的方式放置它