繁体   English   中英

shinydashboard:使用 uiOutput 时获取特定的默认页面

[英]shinydashboard : getting specific default page while using uiOutput

我正在制作反应式 shiny web 页面并停留在下面的代码中。

library(shiny)
library(shinydashboard)

ui = dashboardPage(
  dashboardHeader(title = "header"),
  dashboardSidebar(
    sidebarMenuOutput("sideBar")),
  dashboardBody(
    uiOutput("test")
  )
)

server = shinyServer(function(input, output, session) { 
  output$sideBar <- renderMenu({
    sidebarMenu(id = "menu",
                menuItem("Dashboard", tabName ="dashboard", icon = icon('dashboard')),
                menuItem("DBcentor", tabName ="dbcenter", icon = icon('database'))
    )
  }) 
  output$test <- renderUI ({
    tabItems(
      tabItem(tabName = "dashboard", uiOutput("dashboardbody")),
      tabItem(tabName = "dbcenter", uiOutput("dbcenterbody"))
    )
  })
  output$dashboardbody <- renderUI ({
    box("Dashboard Body")
  })
  output$dbcenterbody <- renderUI ({
    box("Dbcenter Body")
  })
  
})

shinyApp(ui, server)

我使用uiOutput构建主体,但在加载 shiny 应用程序后,仪表板页面上没有任何内容。

我像这样更改了我的代码,

library(shiny)
library(shinydashboard)

ui = dashboardPage(
  dashboardHeader(title = "header"),
  dashboardSidebar(
    sidebarMenuOutput("sideBar")),
  dashboardBody(
    tabItems(
      tabItem(tabName = "dashboard", uiOutput("dashboardbody")),
      tabItem(tabName = "dbcenter", uiOutput("dbcenterbody"))
    )
  )
)

server = shinyServer(function(input, output, session) { 
  output$sideBar <- renderMenu({
    sidebarMenu(id = "menu",
                menuItem("Dashboard", tabName ="dashboard", icon = icon('dashboard')),
                menuItem("DBcentor", tabName ="dbcenter", icon = icon('database'))
    )
  }) 
  output$dashboardbody <- renderUI ({
    box("Dashboard Body")
  })
  output$dbcenterbody <- renderUI ({
    box("Dbcenter Body")
  })
  
})

shinyApp(ui, server)

当然它有效,并且box("dashboadbody")出现在第一页。

我想使用uiOutput因为我应该使用input data来构建菜单和项目。 有什么方法可以同时在默认页面上使用uiOutput和 get box("dashboard")

尝试这个

ui = dashboardPage(
  dashboardHeader(title = "header"),
  dashboardSidebar(
    sidebarMenuOutput("sideBar")),
  dashboardBody(
    uiOutput("test")
  )
)

server = shinyServer(function(input, output, session) { 
  output$sideBar <- renderMenu({
    sidebarMenu(id = "menu",
                menuItem("Dashboard", tabName ="dashboard", icon = icon('dashboard')),
                menuItem("DBcentor", tabName ="dbcenter", icon = icon('database'))
    )
  }) 
  
  output$dashboardbody <- renderUI ({
    box("Dashboard Body")
  })
  output$dbcenterbody <- renderUI ({
    box("Dbcenter Body")
  })
  updateTabItems(session,"menu","dbcenter")
  updateTabItems(session,"menu","dashboard")
  
  output$test <- renderUI ({
    tagList(
      tabItems(
        tabItem(tabName = "dashboard", uiOutput("dashboardbody")),
        tabItem(tabName = "dbcenter", uiOutput("dbcenterbody"))
      ))
  })
})

shinyApp(ui, server)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM