2016-08-25 6 views
1

Betrachten Sie das folgende BeispielWie setze ich eine Sitzung in R zurück?

ui.R:

library(shiny) 
library(shinyjs) 

shinyUI(
    tabPanel("VIEW", 
      tabsetPanel(id="viewic", 
         tabPanel("view1", 
           fluidRow(column(2, 
               actionButton("button1", "BUTTON1")), 
              column(2, 
               actionButton("button2", "BUTTON2")) 
           )) 
         tabPanel(" View2"))), 
    fluidRow(
    uiOutput("ui1") 
), 
    fluidRow(
    uiOutput("ui2") 
)) 

Server:

library(shiny) 
library(shinyjs) 

shinyServer(function(input, output,session){ 

    observeEvent(
    input$button1, 
    output$ui1 <- renderUI({isolate({ 
     column(3, 
      selectInput("selectview1", 
         label = "Select Id", 
         choices = c("1","2","3") 
      ))})})) 

    observeEvent(
    input$button2, 
    output$ui2 <- renderUI({isolate({ 
     column(3, 
      selectInput("selectview2", 
         label = "Select Id", 
         choices = c("4","5","6") 
      ))})})) 

}) 

Wie die Sitzung zurückgesetzt, dh; Wenn ich Knopf1 drücke, erscheint der Selektinput mit ID-Auswahlansicht1, und wenn ich den Knopf2 drücke, erscheint der in ihm definierte Auswahleingang mit ID-Auswahlansicht2, aber der Auswahleingang, der zuerst angezeigt wurde, wenn der Knopf1 angeklickt wurde, wird ebenfalls angezeigt und umgekehrt und umschalten, aber es hat nicht richtig funktioniert.

Antwort

0

EDIT: Verwenden Sie ConditionalPanel auf Ihre SelectInputs. So etwas in der Art von:

conditionalPanel(condition = 'input.button1 % 2 > 0', uiOutput("ui1") )

Diese prüft, ob der Wert Ihres actionButton selbst ist und zeigt es nur, wenn es ungerade ist. Unter der Annahme, dass der Button bei einem Wert von 0 beginnt, wird er nach 1, 3, 5, 7 ... Klicks angezeigt.

Ich denke, das sollte funktionieren. Kannst du es ausprobieren?


Wenn Sie nur eine Taste je nach einem Klick ausblenden möchten, schauen Sie in conditionalPanel() und wickeln Sie Ihre Tastencode (ui Seite) in dieser Funktion.

http://shiny.rstudio.com/reference/shiny/latest/conditionalPanel.html

+0

Vielen Dank Sir, ich möchte nicht die Schaltfläche ausblenden, sondern die Ausgabe durch Klicken auf eine Schaltfläche, wenn die andere Schaltfläche geklickt wird. – Rad

+0

Ich habe gerade meinen Kommentar bearbeitet. –

+0

Sir, aber der Button1 kann nach dem Klicken auf Button2 geklickt werden, es kommt auf den Benutzer an. – Rad

0

ui.R

Bibliothek (glänzend)

Bibliothek (shinyjs)

shinyUI (

fluidPage (

TabPanel ("View",

 tabsetPanel(id="viewic", 

        tabPanel("view1", 

fluidRow (Spalte (2,

           actionButton("button1", "BUTTON1")), 

Säule (2,

        actionButton("button2", "BUTTON2")) 

)), 

TabPanel (“View2"))),

fluidRow (

uiOutput("ui1") 

),

fluidRow (

uiOutput("ui2") 

)))

Server.R

Bibliothek (glänzend) Bibliothek (shinyjs)

shinyServer (function (Eingang, Ausgang, session) {

observeEvent (

input$button1, 

output$ui1 <- renderUI({isolate({ 


    output$ui2<-renderUI(

    isolate({ 

     dataTableOutput(NULL) 


    })) 
    column(3, 

     selectInput("selectview1", 

        label = "Select Id", 

        choices = c("1","2","3") 
     ))})})) 

observeEvent (

input$button2, 

output$ui2 <- renderUI({isolate({ 

    output$ui1<-renderUI(

    isolate({ 

     dataTableOutput(NULL) 


    })) 

Säule (3,

  selectInput("selectview2", 

        label = "Select Id", 

        choices = c("4","5","6") 

     ))})})) 

})

Dieser Code funktioniert.

Verwandte Themen