簡體   English   中英

來自 ShinyBS 的閃亮彈出框每秒鍾顯示一次

[英]Shiny popover from shinyBS displays every second time only

來自 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)

這是 Bootstrap 中的一個已知錯誤:

Bootstrap popover destroy & recreate 僅每兩次工作一次

如果不想更改 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"))),

我可能找到了一個更簡單的解決方案,在調用 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 文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM