2014-04-23 10 views
24

Ist es möglich, eine Aktion auszuführen, wenn der Benutzer auf eine bestimmte tabPanel klickt?Wie benutzt man tabPanel als Eingabe in R Shiny?

Zum Beispiel, wenn der Benutzer auf tabPanel("A", ...) klickt, dann ein Popup anzeigen, das You are viewing tab "A" sagt.

Antwort

19

tabsetPanel() wird den Wert zurückgeben, der dem aktiven tabPanel() zugewiesen ist. Wenn Sie gerade einen anderen Ausgang aktualisieren wollen könnten Sie so etwas tun:

ui.R

library(shiny)  

shinyUI(basicPage( 

    textOutput("text"), 
     tabsetPanel(id = "tabs", 
      tabPanel("Tab A", value = "A", "This is Tab A content"), 
      tabPanel("Tab B", value = "B", "Here's some content for tab B.") 
) 

)) 

server.R

library(shiny) 

shinyServer(function(input, output) { 

    output$text <- renderText({paste0("You are viewing tab \"", input$tabs, "\"")}) 

}) 

aber etwas kompliziert wie ein Pop-up zu schaffen wahrscheinlich erfordern würde Erstellen eines Beobachters und einige zusätzliche benutzerdefinierte Codierung ...

+2

Beispiel funktioniert nicht ... Werte sind nicht definiert! Meinst du Eingabe $ Tabs anstelle von Werten $ tabValue? – Lalas

+1

Beispiel funktioniert nicht, warum ist es 'Werte $ tabValue'? –

+0

Sorry, das war von einer früheren Version meiner Antwort übrig geblieben. Ich habe es korrigiert. – Eric