2015-01-11 6 views
1

Я бы хотел нажать кнопку (скажем A) в sidebarPanel, чтобы после ее использования активировалась другая кнопка (скажем, B) (на renderUI), но кнопка A исчезнет. Как я могу это сделатьИсчезающая кнопка - после нажатия

Здесь мое наивное решение. Я не знаю, как избежать ссылок состояния кнопки к себе:

library(shiny) 
runApp(list(

    ui = fluidPage(
     uiOutput("answer"), 
     uiOutput("part2") 
    ), 

    server = function(input, output) { 

     output$answer <- renderUI({ 
     if(input$continue == 0){ 
      checkboxGroupInput(inputId = "firstQ", label = "First question", choices = c("Ans. A" = "a", "Ans. B" = "b")) 
      actionButton("continue", "Continue")} 
     }) 

     output$part2 <- renderUI({ 
     if(input$kontynuuj > 0) 
      actionButton("newButton", "New button") 
     }) 

    } 
)) 
+0

Добавить ваш код здесь? – HaveNoDisplayName

ответ

2

Я думаю, что conditionalPanel в вашем ui является то, что вам нужно использовать здесь. Это позволит вам установить условие, определяющее, отображается ли часть пользовательского интерфейса или нет.

В коде ниже я переместил checkboxGroupInput и первый actionButton к пользовательскому интерфейсу, и оставил второй actionButton как renderUI. conditionalPanel будет работать в любом случае.

Каждый conditionalPanel оценивает кнопку «Продолжить», первый отображается перед ее нажатием, а затем второй.

Важно отметить, что условие должно быть записано в javascript, а не R. См. ?conditionalPanel для деталей.

library(shiny) 
runApp(list(
    ui = fluidPage(    
    conditionalPanel(condition="input.continue==0", 
      checkboxGroupInput(inputId = "firstQ", label = "First question", 
       choices = c("Ans. A" = "a", "Ans. B" = "b")), 
      actionButton("continue", "Continue") 
    ), 

     conditionalPanel(condition="input.continue>0", 
      uiOutput("part2") 
    ) 
), 

    server = function(input, output) { 
    output$part2 <- renderUI({ 
     actionButton("newButton", "New button") 
    }) 

    } 
)) 
Смежные вопросы