R shiny:在呈现表时显示“loading ...”消息

时间:2014-08-06 14:22:40

标签: r datatables shiny

在Rstudio Shiny中,我得到了一些renderDataTable次调用,通过RMySQL从数据库中获取信息。有些查询可能需要几秒钟才能完成,我想添加一个“正在加载...”的消息,表格将在等待时最终呈现。

这个问题类似于这个问题: R shiny: display "loading..." message while function is running

但是我不想使用$('html').hasClass('shiny-busy')作为条件,而是想以某种方式判断renderDataTable渲染的状态。

有什么想法吗?

3 个答案:

答案 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

enter image description here