因此,这更多是一个概念性问题,是为了响应使用以下方式在我的 Shiny 应用程序上收到“忙碌”通知:
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 如何/何时设置类值?
最佳答案
我不会评论问题的其余部分,但我会回答“有没有办法在服务器中显式设置 html 类?”的问题
您可以使用包shinyjs添加/删除/切换服务器中 HTML 元素的类。以下是添加/删除“shiny-busy”类以/形成 <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")
})
}
))
关于html - 我可以动态设置html类吗?或者Shiny如何设置 'html' .hasClass ('Shiny-busy' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663659/