2017-10-20 14 views
1

J'utilise R shinyDashboard pour créer une application Web. Cette application est chargée de l'atterrissage sur certains tabitem 'aperçu' comme actif. Il y a aussi plus de tabItems. Supposons que j'ai un tabItem spécifique appelé "Paramètres", où l'on peut contrôler l'apparence et les filtres, que je voudrais appliquer avec les valeurs par défaut. Il utilise des valeurs dynamiques, il doit donc être situé sur le serveur. Le problème est que tant que je ne visite pas l'onglet 'Paramètres', ses entrées ne sont pas initialisées et que l'onglet 'Vue d'ensemble' contient des données manquantes.R rendu de force brillant de l'entrée côté serveur sur tabItem non actif lors du chargement

Ci-dessous un exemple reproductible très simple, dans lequel l'application doit être chargé avec la valeur « 10 » dans la zone de texte (alors qu'en pratique, il est seulement peuplée après avoir visité « Paramètres »):

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) 

Répondre

0

Définissez un reactiveValues ou simplement un reactive() pour la variable que vous souhaitez calculer. Attribuez-le par défaut (10). Reportez-vous à cette valeur réactive pour l'argument valeur du numericInput et pour le output$textUI. observeEvent sur le numericInput et mettre à jour le reactiveValues en conséquence.

+0

Merci, a travaillé parfaitement sur l'exemple. Aller de l'avant pour le mettre dans le code complet. – user3096229