有一些示例可用于Shinydashboard dynamic menuItems。最有用的是here、here和here。
但是,当我尝试动态呈现每个menuItem中的内容时,我无法使其工作。
您将从我的示例中注意到,menuItem "main“是在服务器端动态创建的,但其中的UI项不是(textInput、passwordInput和actionButton)。
这是我的代码。
library(shiny)
library(shinydashboard)
# Define UI for app
header1 <- dashboardHeader(
title = "My Dynamic Menu"
) #dashboardHeader
# DYNAMIC UI
sidebar1 <- dashboardSidebar(
sidebarMenu(
menuItemOutput("menuitems")
) #sidebarMenu
) #dashboardSidebar
#
body1 <- dashboardBody(
tabItems(
menuItemOutput("tabitems")
) #tabItems
) #dashboardBody
ui <- dashboardPage(header1, sidebar1, body1)
# Define server logic
server <- function(input, output, session) {
output$menuitems <- renderMenu({
menuItem("Main", tabName = "main", icon = icon("key"))
}) #renderMenu
output$tabitems <- renderUI({
tabItem(tabName = "main",
h2("Login"),
textInput(inputId = "username1", label = "User name:", value = ""),
passwordInput(inputId = "password1", label = "Password:"),
actionButton(inputId = "loginbutton1", label = "Login")
) #tabItem
}) #renderUI
} #server
# Run the application
shinyApp(ui = ui, server = server)UI元素看起来就像我用下面的代码替换了# DYNAMIC UI部件...
# STATIC UI
sidebar1 <- dashboardSidebar(
sidebarMenu(
menuItem("Main", tabName = "main", icon = icon("key"))
) #sidebarMenu
) #dashboardSidebar
#
body1 <- dashboardBody(
tabItems(
tabItem(tabName = "main",
h2("Login"),
textInput(inputId = "username1", label = "User name:", value = ""),
passwordInput(inputId = "password1", label = "Password:"),
actionButton(inputId = "loginbutton1", label = "Login")
) #tabItem
) #tabItems
) #dashboardBody我知道它不会在其中呈现单独的UI元素,因为我在dashboardBody中为("tabitems")使用了menuItemOutput。我在文档中找不到任何其他用于创建动态UI元素的UI端函数。
如何动态添加UI项并将其保留在各自的菜单项中?
如果你能帮我解决这个问题,我将不胜感激!有什么想法吗?
发布于 2019-03-10 01:33:22
它应该显示uiOutput("tabitems"),而不是menuItemOutput("tabitems")。
现在它起作用了。
https://stackoverflow.com/questions/54976204
复制相似问题