2016-08-08 11 views
1

もっと管理するためにserver.RにUIを設定しましたが、server.Rで定義されているとshinyDashboardは動作しません。 私はこのメソッドをnavBarPageと共に問題なく使用します。shinydashboardがuiOutputで動作しません

このコードは

library(shiny)  
library(shinydashboard) 

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

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

を動作しますが、この1つはちょうどこれは私にはない細かい

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)) 

答えて

3

を作品navBarPageを使用した例であり、

ui  <- uiOutput('dash') 
server <- shinyServer(function(input, output) { 
    output$dash <- renderUI({ 
    dashboardPage(dashboardHeader(), 
        dashboardSidebar(), 
        dashboardBody() ) 
    }) 
}) 
runApp(list(ui= ui, server = server)) 

空のページを表示しますダッシュボードの作成にはuiOutputしか使用できないと思います。私はあなたの目標が動的なダッシュボードを作成することだと仮定しています。そのためには、UIにヘッダ、ボディ、サイドバーを定義し、SERVERのrenderMenuなどの関数を使用して作成する必要があります。次に、SERVERに定義されているすべてのUIを含むダッシュボードを作成する例を示します。この例では

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も削除できます。

+0

私の実際の使用方法は少し複雑です。私はnavbarPageの中でdashboardPageを使用しています。これはサーバーで動的に生成されます。私のUI.R、uiOutput( "App")には1行しかありません。 renderUIを使用してdashboardPageを呼び出すことはできないため、この方法は失敗します。しかし、私はあなたが正しいと思う、ダッシュボードはこのように実装することはできません。 –

+0

これは非常に役に立ちます。私はuiOutputサーバーサイドを使用して別のレンダリングUIにそれを供給できることに気づいていませんでした。 – SprengMeister

関連する問題