2017-10-20 3 views
1

Ich verwende R shinyDashboard, um eine Web-App zu erstellen. Diese App ist geladen mit der Landung auf einem 'Übersicht' Tabitem als aktiv. Es gibt auch einige weitere tabItems. Angenommen, ich habe ein bestimmtes TabItem mit dem Namen "Einstellungen", in dem man Aussehen und Filter steuern kann, das ich mit Standardwerten anwenden möchte. Es verwendet dynamische Werte, daher muss es sich auf der Serverseite befinden.R shiny force rendern der serverseitigen Eingabe auf nicht aktivem tabItem beim Laden

Das Problem ist, dass, bis ich nicht die TabItem 'Einstellungen' besuchen, seine Eingaben nicht initialisiert werden und daher das TabItem 'Übersicht' Daten fehlt.

Im Folgenden ein reproduzierbares sehr einfaches Beispiel ist, in dem die App sollte mit dem Wert ‚10‘ in dem Textfeld geladen werden (während in der Praxis wird es nur nach dem Besuch ‚Einstellungen‘ bevölkert):

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) 

Antwort

0

Definieren Sie eine reactiveValues oder nur eine reactive() für die Variable, die Sie berechnen möchten. Weisen Sie ihm einen Standardwert zu (10). Siehe den reaktiven Wert für das Wertargument der numericInput und für die output$textUI. observeEvent über die numericInput und aktualisieren Sie die reactiveValues entsprechend.

+0

Danke, arbeitete perfekt am Beispiel. Fahren Sie fort, es in den vollen Code zu setzen. – user3096229

Verwandte Themen