2017-06-16 176 views
1

我想用actionButton写一个简单的闪亮应用程序。当按下actionButton时,一些文本输出应直接打印在下方。下面的代码需要我的角色的方式来解决:如何使用shiny actionButton来显示和隐藏文本输出?

shinyApp(
    ui = shinyUI(fluidPage(
    actionButton("button", "don't press the button"), 
    verbatimTextOutput("text") 
) 
), 
    server = function(input, output, session){ 
    observeEvent(input$button, { 
     output$text <- renderText({"ahh you pressed it"}) 
    }) 
    } 
) 

有两件事情我想改变,但不知道如何:

1)上面的代码显示了一个空的灰色框前按钮被按下 - 我想那里没有任何按钮被按下之前。它看起来像conditionalPanel可能是正确的方法,但不知道如何实现这一点。

2)上述代码是否可以调整,以便一旦第二次按下按钮,文本输出又会被隐藏起来?没有灰色框在这里 -

+1

1)我无法证实,试试这个。 2)你可以使用'shinyjs'包,在'fluidPage'中包含'useShinyjs()',在ovbserver中设置文本为'hidden(verbatimTextOutput(“text”))'并添加'toggle(“text”)' ,以便每次点击时切换_text_的隐藏/可见状态。 – lukeA

回答

1

您可以shinyjshiddentoggle

library(shiny) 
library(shinyjs) 

shinyApp(
    ui = shinyUI(fluidPage(useShinyjs(), 
    actionButton("button", "don't press the button"), 
    hidden(
     div(id='text_div', 
     verbatimTextOutput("text") 
     ) 
    ) 
) 
), 
    server = function(input, output, session){ 
    observeEvent(input$button, { 
     toggle('text_div') 
     output$text <- renderText({"ahh you pressed it"}) 
    }) 

    } 
)