2017-10-20 54 views
1

我使用R shinyDashboard創建一個Web應用程序。這個應用程序在一些'概述'tabitem上作爲活動加載着陸。還有一些更多的tabItems。假設我有一個名爲'設置'的特定tabItem,其中可以控制外觀和過濾器,我希望使用默認值。它使用動態值,所以它必須位於服務器端。R閃亮的強制渲染的服務器端輸入在非活動tabItem上加載

問題是,直到我沒有訪問'設置'tabItem,其輸入未初始化,因此'概述'tabItem缺少數據。

下面是一個可再現的非常簡單的例子,其中,應用程序應被加載在文本框中的值「10」(而在實踐中,它僅前往「設置」之後填充):

require(shiny) 
require(shinydashboard) 

ui<-dashboardPage(skin = "black", 
    dashboardHeader(
    ), 

    dashboardSidebar(
     sidebarMenu(
      menuItem("Overview", tabName = "overview"), 
      menuItem("Settings", tabName = "settings")  ) 
     ), 

     dashboardBody(
      tabItems(
       tabItem("overview", 
       uiOutput("textUI") 
      ), 

      tabItem("settings", 
       htmlOutput("FilterUI") 
      ) 
     ) 
    ) 
) 

server<-shinyServer(function(input, output,session) { 

    output$FilterUI <- renderUI({ 
     numericInput("selected_filter", "Select value",min=0,max=20,value=10) 
    }) 

    output$textUI <-renderUI({ 
     box(input$selected_filter) 
    }) 
}) 

shinyApp(ui, server) 

回答

0

爲要計算的變量定義一個reactiveValues或只是一個reactive()。將其分配爲默認值(10)。請參閱numericInput的值參數以及output$textUI的反應值。 observeEventnumericInput並相應地更新reactiveValues

+0

謝謝,在這個例子上工作完美。繼續把它放到完整的代碼中。 – user3096229