html - 我可以动态设置html类吗?或者Shiny如何设置 'html' .hasClass ('Shiny-busy' )?

标签 html shiny shinyjs

因此,这更多是一个概念性问题,是为了响应使用以下方式在我的 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/

相关文章:

html - Ctrl + PLUS/MINUS 在现代浏览器中有什么作用?

r - 数据表未以 Shiny 的方式呈现

R/ Shiny : Plotly reactive height discarded after window resize

r - ShinyManager 身份验证屏幕不会超时

javascript - 使用 python 脚本打印到 Chrome 控制台 - 如何调整以在 div 中打印?

javascript - 将 HTML、JQuery 和 CSS 添加到 drupal 7

javascript - 具有相同高度的动态 DIV

r - 如何与 Shiny 和 gridExtra 一起工作?

shiny - 如何使用 shinyjs 修改多个元素的类

r - 在客户端使用 afterChange 事件更改 rHandsontable 的单元格背景