Popups不会使用闪亮的0.9

时间:2014-03-25 08:49:05

标签: jquery r twitter-bootstrap shiny

下面的最小闪亮应用程序生成一个带弹出窗口的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() })
    })
)

1 个答案:

答案 0 :(得分:6)

这是一个时间问题: 将您的功能更改为

tags$script("$(setTimeout(function() { $(\"[data-toggle='popover']\").popover(); }),3000)")
例如

它应该工作。元素在原始版本的DOM中不存在。以上是解决问题的廉价(不一定是好的)方法。

有一个闪亮的变化

  

使用时,tags$head()singleton()的行为正确   renderUI()uiOutput()。以前,“将内容提升到了   头“和”只渲染项目一次“是这些功能   仅在页面最初加载时工作,而不是动态   渲染。

据推测,以前剧本并没有被提升到头部,执行顺序也不同。