【问题标题】:R Shinydashboard dynamic tabItem does not workR Shinydashboard 动态 tabItem 不起作用
【发布时间】:2019-07-25 08:24:08
【问题描述】:

有一些可用于 Shinydashboard 动态菜单项的示例。 最有用的是hereherehere

但是,当我尝试动态呈现每个 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 内部使用menuItemOutput 代表("tabitems")。我在文档中找不到任何其他用于创建动态 UI 元素的 UI 端函数。

如何动态添加 UI 项并将它们保存在各自的菜单项中?

如果您能帮我解决这个问题,我将不胜感激! 有什么想法吗?

【问题讨论】:

  • 如何使用 insertUI(而不是渲染 UI)将每个项目放置在正确的 menuItem 中并跟上它们,以便稍后删除它们?

标签: r dynamic shinydashboard tabitem


【解决方案1】:

应该说uiOutput("tabitems"),而不是menuItemOutput("tabitems")

现在可以了。

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2017-12-07
    • 2019-04-02
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多