2

因此,这更多是一个概念性问题,以响应使用以下方式在我的闪亮应用程序上获得“忙碌”通知:

conditionalPanel(
        condition="$('html').hasClass('shiny-busy')",
        img(src="images/busy.gif"))  

在对数据库的初始查询期间,我得到了一个动画 gif 来显示,但在那之后它变得不可预测。如果进行了新的数据库调用,我在第二个条件面板中添加了隐藏输出图:

conditionalPanel(
     condition="!($('html').hasClass('shiny-busy'))",
     plotOutput("Some Graph"))  

该设置通过第二次数据拉取工作,但如果进行第三次数据库查询,“Some Graph”不再隐藏,“busy.gif”不再显示。它会在加载新绘图时闪烁。

所以我的首要问题是:
有没有办法在服务器中显式设置 html 类?
或者
Shiny 如何/何时设置班级价值?

4

1 回答 1

4

我不会对问题的其余部分发表评论,但我会回答“有没有办法在服务器中显式设置 html 类?”的问题。

您可以使用包shinyjs来添加/删除/切换服务器中 HTML 元素的类。这是添加/删除“闪亮忙碌”类到/形成<html>标签的示例

library(shiny)
library(shinyjs)

runApp(shinyApp(
  ui = fluidPage(
    useShinyjs(),
    actionButton("add", "add `shiny-busy` class to html tag"),
    actionButton("remove", "remove `shiny-busy` class from html tag")
  ),
  server = function(input, output, session) {
    observeEvent(input$add, {
      shinyjs::addClass(selector = "html", class = "shiny-busy")
    })
    observeEvent(input$remove, {
      shinyjs::removeClass(selector = "html", class = "shiny-busy")
    })    
  }
))
于 2015-07-28T00:59:47.640 回答