2016-08-25 30 views
1

考慮下面如何重置R中的會話?

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") 
)) 

服務器:

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") 
      ))})})) 

}) 

如何重置會話,即;當我按下按鈕1時,出現id爲selectview1的選擇輸入,當我按下按鈕2時,其中定義了id爲selectview2的selectInput出現,但當按鈕1被點擊時首先出現的選擇輸入也與其一起顯示,反之亦然。我嘗試重置並切換,但它沒有正常工作。

回答

0

編輯:在你的selectInputs上使用conditionalPanel。所以東西的效果:

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

這將檢查actionButton的值是否均勻,只顯示它時,它爲奇數。所以假設按鈕從0開始,它將在1,3,5,7 ...點擊之後顯示。

我認爲這應該工作。你可以試試嗎?


如果你只想隱藏取決於點擊一個按鈕,看看conditionalPanel(),並在該函數包裝您的按鈕代碼(UI端)。

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

+0

謝謝主席先生,我不想隱藏按鈕,但點擊另一個按鈕時點擊一個按鈕獲得的輸出。 – Rad

+0

剛剛編輯我的評論。 –

+0

先生,但先點擊button2後可以點擊button1,這取決於用戶。 – Rad

0

ui.R

庫(有光澤)

庫(shinyjs)

shinyUI(

fluidPage(

的TabPanel( 「VIEW」,

 tabsetPanel(id="viewic", 

        tabPanel("view1", 

fluidRow(柱(2,

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

塔(2,

        actionButton("button2", "BUTTON2")) 

)), 

的TabPanel(」視圖2" ))),

fluidRow(

uiOutput("ui1") 

),

fluidRow(

uiOutput("ui2") 

)))

服務器。ř

庫(有光澤) 庫(shinyjs)

shinyServer(功能(輸入,輸出,會話){

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(

​​

列(3,

  selectInput("selectview2", 

        label = "Select Id", 

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

     ))})})) 

})

此代碼工作。