【发布时间】:2016-11-15 23:13:39
【问题描述】:
我正在编写一些闪亮的代码,用户将在应用程序中输入一些输入,然后单击一个操作按钮。操作按钮会触发一堆需要很长时间才能运行的模拟,所以我希望在单击操作按钮后将其禁用,以便用户在运行模拟之前无法继续单击它。我遇到了shinyjs::enable 和shinyjs::disable 函数,但一直很难使用它们。这是我的服务器代码:
output$button1= renderUI({
if(input$Button1 > 0) {
shinyjs::disable("Button1")
tableOutput("table")
shinyjs::enable("Button1")}
})
但是,当我使用此代码并单击操作按钮时,没有任何反应。即,操作按钮不会变灰,也不会生成表格。但是,当我删除shinyjs::enable() 命令时,即
output$button1= renderUI({
if(input$Button1 > 0) {
shinyjs::disable("Button1")
tableOutput("table")
}
})
首先生成表格,然后按钮变为灰色,但我希望按钮变为灰色,然后表格自行生成。
我在这里做错了什么?
这是我根据 Geovany 的建议更新的代码,但它仍然不适合我
Button1Ready <- reactiveValues(ok = FALSE)
observeEvent(input$Button1, {
shinyjs::disable("Button1")
RunButton1Ready$ok <- FALSE
RunButton1Ready$ok <- TRUE
})
output$SumUI1= renderUI({
if(Button1Ready$ok){
tableOutput("table")
shinyjs::enable("Button1")
}
})
我还有什么需要澄清的地方:
output$table <- renderTable({
#My code....
)}
【问题讨论】: