在Rstudio Shiny中,我得到了一些renderDataTable
次调用,通过RMySQL从数据库中获取信息。有些查询可能需要几秒钟才能完成,我想添加一个“正在加载...”的消息,表格将在等待时最终呈现。
这个问题类似于这个问题: R shiny: display "loading..." message while function is running
但是我不想使用$('html').hasClass('shiny-busy')
作为条件,而是想以某种方式判断renderDataTable
渲染的状态。
有什么想法吗?
答案 0 :(得分:3)
请改为寻找recalculating
班级:
ui <- fluidPage(
actionButton('reload', 'reload'),
dataTableOutput('dtable_out'),
conditionalPanel("$('#dtable_out').hasClass('recalculating')",
tags$div('Loading ... ')
)
)
server <- function(input, output, session) {
output$dtable_out <- renderDataTable({
input$reload
Sys.sleep(2)
data.frame(a=1:10, b=letters[1:10])
})
}
runApp(list(ui=ui, server=server))
答案 1 :(得分:1)
另一种方式(不太优雅),就是将条件设置为&#34;而不是在渲染完成时预期的条件&#34;。
例如。如果你期待expectClass:
conditionalPanel(&#34;的 强> $(&#39;#dtable_out&#39;。)hasClass(&#39; expectedClass&#39;)&#34 ;, 标签$ div(&#39;正在加载......&#39;) )
当上述事情没有...
时为我工作答案 2 :(得分:1)
套餐shinycssloaders
完成了一些漂亮的动画:https://github.com/andrewsali/shinycssloaders