2017-04-19 64 views
2

从shinyBS发出的动态弹出窗口只会在每第二次选择时亮起。从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) 

回答

1

这是引导一个已知的bug:

Bootstrap popover destroy & recreate works only every second time

如果你不想改变ShinyBS的代码,添加一个js文件在你的WWW子文件夹下面的:

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); 
    } 
} 

,并添加以下到您的用户界面:(假设文件名为pop_patch.js)

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

作品一种享受。只需要记住将.js文件放在www文件夹中。 –