下面的最小闪亮应用程序生成一个带弹出窗口的html表。它在闪亮的0.8下运行良好,但它不适用于闪亮的0.9:只显示弹出窗口的标题,而不是内容。 shiny-discuss尚未解决此问题。也许这是由于bootstrap或jQuery,它们已经在闪亮的0.9
中更新tabl <- function(){
title <- "hello"
content <- "Goodbye"
out <- sprintf('<table style="width:300px">
<tr>
<td><a href="javascript: void(0)" data-toggle="popover" data-content="%s" data-html="true" data-animation="true" data-placement="bottom" data-trigger="hover" title="%s">Jill</a></td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
', title, content)
out <- tagList(
singleton(
tags$head(
tags$script("$(function() { $(\"[data-toggle='popover']\").popover(); })")
)
),
HTML(out)
)
return(out)
}
runApp(
list(
ui=pageWithSidebar(
headerPanel(""),
sidebarPanel(
),
mainPanel(
uiOutput("htmltable")
)
),
server=function(input,output,session){
output$htmltable <- renderUI({ tabl() })
})
)
答案 0 :(得分:6)
这是一个时间问题: 将您的功能更改为
tags$script("$(setTimeout(function() { $(\"[data-toggle='popover']\").popover(); }),3000)")
例如它应该工作。元素在原始版本的DOM中不存在。以上是解决问题的廉价(不一定是好的)方法。
有一个闪亮的变化
使用时,
tags$head()
和singleton()
的行为正确renderUI()
和uiOutput()
。以前,“将内容提升到了 头“和”只渲染项目一次“是这些功能 仅在页面最初加载时工作,而不是动态 渲染。
据推测,以前剧本并没有被提升到头部,执行顺序也不同。