【问题标题】:Shiny popover from shinyBS displays every second time only来自shinyBS 的闪亮弹出框仅每秒钟显示一次
【发布时间】:2017-04-19 09:12:48
【问题描述】:

shinyBS 的动态弹出框仅在每秒钟选择一次时出现。

library(shiny)
library(shinyBS)

ui <- fluidPage(
   sidebarLayout(
      sidebarPanel(
        selectInput("poppy", "Think!", c("A", "B", "C", "D")),
        bsButton("dummy", "dummy")), ## required, dummy
      mainPanel(
        helpText("Note that when you select from the box, popover turns up every second time only!")
)))

server <- function(input, output, session) {
   observe({
     poppy = paste("You selected ", input$poppy)
     addPopover(session, "poppy", "Every second time", poppy)
})}

shinyApp(ui = ui, server = server)

【问题讨论】:

    标签: r twitter-bootstrap shiny shinybs


    【解决方案1】:

    这是 Bootstrap 中的一个已知错误:

    Bootstrap popover destroy & recreate works only every second time

    如果不想修改 ShinyBS 的代码,请在 www 子文件夹中添加一个 js 文件,内容如下:

    shinyBS.addTooltip = function(id, type, opts) {
      var $id = shinyBS.getTooltipTarget(id);
      var dopts = {html: true};
      opts = $.extend(opts, dopts);
    
      if(type == "tooltip") {
        $id.tooltip("destroy");
        setTimeout(function() {$id.tooltip(opts);},200);
      } else if(type == "popover") {
        $id.popover("destroy");
        setTimeout(function() {$id.popover(opts);},200);
      }
    }
    

    并将以下内容添加到您的 ui:(假设文件名为 pop_patch.js)

    singleton(tags$head(tags$script(src = "pop_patch.js"))),
    

    【讨论】:

    • 是一种享受。只需要记住将 .js 文件放在 www 文件夹中。
    • 效果很好。谢谢
    【解决方案2】:

    我可能找到了一个更简单的解决方案,在调用 addPopover() 之前使用 removePopover() 和 Sys.sleep(0.2)。

    observeEvent(input$poppy, {
         removePopover(session, "poppy")
         Sys.sleep(0.2)
         poppy = paste("You selected ", input$poppy)
         addPopover(session, "poppy", "Every second time", poppy)
    })
    

    这对我有用,不需要 pop_patch.js 文件

    【讨论】:

    • 我已经完全放弃使用shinyBS了,因为它已经5年没有维护了
    • 我明白了。你找到替代品了吗?
    • 不完全,但对于工具提示而言,tippy 效果很好。使用github版本,CRAN版本有点落后
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多