【问题标题】:R shiny: display “loading…” message while table is being renderedR闪亮:在渲染表格时显示“正在加载...”消息
【发布时间】:2014-09-29 12:52:57
【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

    标签: r datatables shiny


    【解决方案1】:

    改为寻找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))
    

    【讨论】:

    • 谢谢,我可以看到“正在加载...”消息充分出现和消失,但在recalculating 之后仍有一小部分时间没有显示表格。那是 HTML 渲染时间吗?
    • 非常感谢。我一直在寻找这个确切的东西几个小时。
    【解决方案2】:

    另一种方式(不太优雅)是设置条件,例如“不是渲染完成时您期望的条件”。

    例如。如果你期待期望类:

    conditionalPanel("!$('#dtable_out').hasClass('expectedClass')", tags$div('加载中...') )

    在上述情况下为我工作......

    【讨论】:

      【解决方案3】:

      shinycssloaders 用一些漂亮的动画来完成这项工作:https://github.com/andrewsali/shinycssloaders

      【讨论】:

        猜你喜欢
        • 2013-06-23
        • 1970-01-01
        • 2023-04-06
        • 2018-01-14
        • 2015-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        • 2016-06-12
        相关资源
        最近更新 更多