簡體   English   中英

R:彈出窗口不會在閃亮的反應式用戶界面中觸發

[英]R: Popovers don't trigger in shiny reactive UI

我目前正在開發一個閃亮的小工具,並遇到了一個小問題,即在renderUI()生成時,Bootstrap彈出窗口不會觸發。 誰能闡明為什么會這樣?

我對js不太熟悉,所以對於這個問題,我可能會缺少一個明顯的答案。

下面的示例重現該問題。 簡而言之:創建了一個可渲染邊欄和繪圖的小工具; 側欄中的兩個鏈接標記應觸發彈出窗口,第一個在UI對象中生成,第二個由uiOutput()renderUI()組合生成。 至少對我來說,被動彈出窗口不會觸發。

MWE:

library(shiny)
library(miniUI)

# Functions for popovers --------------------------------------------------

popoverInit <- function() {
  tags$head(
    tags$script(
      "$(document).ready(function(){$('[data-toggle=\"popover\"]').popover();});"
    )
  )
}
popover <- function(content, pos, ...) {
  tagList(
    singleton(popoverInit()),
    tags$a(href = "#pop", `data-toggle` = "popover", `data-placement` = paste("auto", pos),
           `data-original-title` = "", title = "", `data-trigger` = "hover",
           `data-html` = "true", `data-content` = content, ...)
  )
}

# Gadget function ---------------------------------------------------------

reactive_popovers <- function(data, xvar, yvar) {

  ui <- miniPage(
    gadgetTitleBar("Reactive popovers"),
    fillRow(  # Sidebar and plot.
      flex = c(1, 10),
      tagList(
        tags$hr(),

        ## This popover works fine:
        popover("No problems", pos = "right", "Working popover"),

        tags$hr(),

        ## This one doesn't.
        uiOutput("reactive_popover")
      ),

      ## A pointless plot.
      miniContentPanel(
        plotOutput("plot", height = "100%")
      )
    )
  )

  server <- function(input, output, session) {

    ## Render popover.
    output$reactive_popover <- renderUI({
      popover("Popover content", "right", "Dead popover")
    })

    ## Render plot.
    output$plot <- renderPlot({
      plot(mpg ~ hp, data = mtcars)
    })
  }

  runGadget(ui, server, viewer = browserViewer())
}

reactive_popovers()

我認為發生這種情況是因為renderUIpopover renderUI是在js綁定之后創建的,因此不會被初始化。

按照這篇文章的答案,您可以執行以下操作:

popoverInit <- function() {
  tags$head(
    tags$script(
      "$(document).ready(function(){
      $('body').popover({
            selector: '[data-toggle=\"popover\"]',
            trigger: 'hover'        
        });});"
    )
  )
}

暫無
暫無

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

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