2017-04-19 19 views
2

shinyBSのダイナミックポップオーバーは1秒おきにしか表示されません。shinyBSのシャイニーポップオーバーは2回目ごとに表示されます

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

これは、ブートストラップの既知のバグです:あなたは、ShinyBSのコードを変更したいあなたのwwwサブフォルダに次のようにJSファイルを追加しない場合

Bootstrap popover destroy & recreate works only every second time

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"))), 
+0

は扱います。 .jsファイルをwwwフォルダに置くことを忘れないでください。 –

関連する問題