首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shinydashboard不适用于uiOutput

shinydashboard不适用于uiOutput
EN

Stack Overflow用户
提问于 2016-08-08 10:30:09
回答 1查看 3K关注 0票数 8

为了获得更多的控制,我在server.R中设置了UI,但是当在server.R中定义时,shinyDashboard不起作用。

这段代码起作用

代码语言:javascript
复制
library(shiny)     
library(shinydashboard)

ui     <- dashboardPage(  dashboardHeader( ), 
                          dashboardSidebar(),
                          dashboardBody()   )

server <- shinyServer(function(input, output) {   })
runApp(list(ui= ui, server = server))

但是这个只是显示一个空的页面

代码语言:javascript
复制
ui     <-  uiOutput('dash')
server <- shinyServer(function(input, output) { 
  output$dash <- renderUI({   
    dashboardPage(dashboardHeader( ), 
                  dashboardSidebar(),
                  dashboardBody()  )
  }) 
})
runApp(list(ui= ui, server = server))

这是一个使用navBarPage的示例,它运行良好。

代码语言:javascript
复制
ui     <-  uiOutput('nav')
server <- shinyServer(function(input, output) { 
  output$nav <- renderUI({   
    navbarPage("App Title",  
               tabPanel("Tab 1"),    
               tabPanel("Tab 2")  ) 
  })
})  
runApp(list(ui= ui, server = server))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 23:51:09

我认为您不能只使用uiOutput,即创建仪表板。我假设您的目标是创建一个动态仪表板。为此,您需要在UI中定义标题、正文和边栏,并使用服务器上的renderMenu等函数来创建它。下面是一个使用服务器中定义的所有UI创建仪表板的示例。

代码语言:javascript
复制
ui <- dashboardPage(
  dashboardHeader(title = "My Page"),
  dashboardSidebar(sidebarMenuOutput("sideBar_menu_UI")),
  dashboardBody(
    uiOutput("body_UI"),
    uiOutput("test_UI")
  )
)

server <- shinyServer(function(input, output, session) { 
  output$sideBar_menu_UI <- renderMenu({
    sidebarMenu(id = "sideBar_Menu",
      menuItem("Menu 1", tabName="menu1_tab", icon = icon("calendar")),
      menuItem("Menu 2", tabName="menu2_tab", icon = icon("database"))
    )
  }) 
  output$test_UI <- renderUI ({
    tabItems(
      tabItem(tabName = "menu1_tab", uiOutput("menu1_UI")),
      tabItem(tabName = "menu2_tab", uiOutput("menu2_UI"))
    )
  })
  output$body_UI <- renderUI ({
    p("Default content in body outsite any sidebar menus.")
  })
  output$menu1_UI <- renderUI ({
    box("Menu 1 Content")
  })
  output$menu2_UI <- renderUI ({
    box("Menu 2 Content")
  })

})

runApp(list(ui= ui, server = server))

在本例中,默认情况下不为侧栏选择菜单,body_UI的内容将始终可见。如果希望仪表板从特定菜单开始,请将sidebarMenu放在UI中。还可以删除body_UI

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38826893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档