R Shinydashboard динамическая вкладкаItem не работает - PullRequest
0 голосов
/ 04 марта 2019

Есть несколько примеров, доступных для элементов динамического меню 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.Я не смог найти никакой другой функции на стороне пользовательского интерфейса для создания динамических элементов пользовательского интерфейса в документации.

Как я могу динамически добавлять элементы пользовательского интерфейса и хранить их внутри соответствующих пунктов меню?

Я буду признателенэто много, если вы можете помочь мне с этим!Есть идеи?

1 Ответ

0 голосов
/ 09 марта 2019

Вместо menuItemOutput("tabitems") следует сказать uiOutput("tabitems").

Теперь все работает.

...