[英]R: Popovers don't trigger in shiny reactive UI
我目前正在開發一個閃亮的小工具,並遇到了一個小問題,即在renderUI()
生成時,Bootstrap彈出窗口不會觸發。 誰能闡明為什么會這樣?
我對js不太熟悉,所以對於這個問題,我可能會缺少一個明顯的答案。
下面的示例重現該問題。 簡而言之:創建了一個可渲染邊欄和繪圖的小工具; 側欄中的兩個鏈接標記應觸發彈出窗口,第一個在UI對象中生成,第二個由uiOutput()
和renderUI()
組合生成。 至少對我來說,被動彈出窗口不會觸發。
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()
我認為發生這種情況是因為renderUI
的popover
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.