Есть несколько примеров, доступных для элементов динамического меню Shinydashboard.Наиболее полезными являются здесь , здесь и здесь .
Однако, когда я пытаюсь динамически визуализировать содержимое внутри каждого элемента меню,Я не могу заставить его работать.
Вы заметите из моего примера, что menuItem "main" создается динамически на стороне сервера, но элементы пользовательского интерфейса внутри него - нет (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)
Элементы пользовательского интерфейса должны выглядеть так, как будто я заменил часть # 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
Я знаю, что этоне рендерит отдельные элементы интерфейса внутри, потому что я использую menuItemOutput
для ("tabitems")
внутри dashboardBody.Я не смог найти никакой другой функции на стороне пользовательского интерфейса для создания динамических элементов пользовательского интерфейса в документации.
Как я могу динамически добавлять элементы пользовательского интерфейса и хранить их внутри соответствующих пунктов меню?
Я буду признателенэто много, если вы можете помочь мне с этим!Есть идеи?