2016-04-26 11 views
0

Ich möchte eine Tabelle unter bestimmten Bedingungen ausblenden/zeigen. Bei der Auswahl von "Quelle 2" möchte ich Tab2 ausblenden, aber der Code, den ich verwendet habe, hat einen Fehler. Wenn ich zuerst "source 1" ausgewählt habe und dann auf "tab2" geklickt habe und die Datenquelle in "source 2" geändert habe, wurde zwar die tab2-Registerkarte ausgeblendet, aber der Inhalt von "tab2" umfasste den Inhalt von "tab1" . Wie kann ich das Resudual der ausgeblendeten Registerkarte entfernen? Alle Gedanken würden sehr geschätzt werden.So entfernen Sie Residuum beim Ausblenden eines Tabellenteils in glänzendem

library(shiny) 
library(shinyjs) 

runApp(list(
    ui = fluidPage(
    useShinyjs(), 
    selectInput('dataSource',h5("Please choose the data source:"), c("source 1", "source 2"), "source 1"), 
    tabsetPanel(
     id = "navbar", 
     tabPanel(title = "tab1", 
       value = "tab1", 
       h1("Tab 1") 
    ), 
     tabPanel(id="id2", title = "tab2", 
       value = "tab2", 
       h1("Tab 2") 
    ) 
    ) 
), 
    server = function(input, output) { 
    observeEvent(input$dataSource,{ 
     toggle(condition = (input$dataSource !='source 2'), selector = "#navbar li a[data-value=tab2]") 
    }) 
    } 
)) 

[sieht der Fehler wie folgt] [1] [1]: http://i.stack.imgur.com/eOHLS.png

+0

Irgendwie funktioniert Ihr Code auf meinem Computer fehlerfrei. –

Antwort

0

Ich kann den Fehler auf meinem Laptop reproduzieren.

Mein Rat wäre, eine renderUI Funktion zu verwenden, um dynamisch eine tabsetPanel zu erstellen.

library(shiny) 
# library(shinyjs) 

runApp(list(
    ui = fluidPage(
    #useShinyjs(), 
    selectInput('dataSource',h5("Please choose the data source:"), c("source 1", "source 2"), "source 1"), 
    uiOutput("dynamic") 

), 
    server = function(input, output) { 

    output$dynamic <- renderUI({ 

     if (input$dataSource == "source 1") { 

     tabsetPanel(
      id = "navbar", 
      tabPanel(title = "tab1", 
        value = "tab1", 
        h1("Tab 1") 
     ), 
      tabPanel(id="id2", title = "tab2", 
        value = "tab2", 
        h1("Tab 2") 
     ) 
     ) 
     } else { 
     tabsetPanel(
      id = "navbar", 
      tabPanel(title = "tab1", 
        value = "tab1", 
        h1("Tab 1") 
     ) 
     ) 
     } 
    }) 
    } 
)) 
Verwandte Themen