有光泽的动态弹出窗口或工具提示在

时间:2016-09-09 11:01:50

标签: javascript r shiny shinybs

想法

我在闪亮的应用中有一个box()box()包含title参数(其中包含icon)和selectInput()元素。关于icon上方的胡佛我想要一个工具提示(使用tipify())或一个弹出窗口(使用popify()titlecontent参数(或两者) )将根据selectInput()输入生成。

问题

tipify()popify()都没有正确地将textOutput()作为titlecontent参数实施。他们需要一个字符串,所以我尝试使用reactiveValues()元素作为函数参数,但它也失败了。

问题

只需使用r,工具提示或弹出式内容是否可以动态化?怎么可以这样做?

我怀疑可以使用JavaScript完成,但我对此知之甚少。

代码

尝试1 - 失败 - 显示代码而非实际文本

library("shiny")
library("shinydashboard")
library("shinyBS")

ui <- fluidPage(
 box(
   title = span("My box",
                tipify(el = icon(name = "info-circle", lib = "font-awesome"), title = textOutput("TIP"))),
   selectInput(
     inputId = "SELECT",
     label = NULL,
     choices = c("Option1" = "Option1",
                 "Option2" = "Option2"
     ),
     multiple = FALSE
   )
 )
)
server <- function(input, output, session){
  output$TIP <- renderText({"Helo world!"})
}
shinyApp(ui, server)

尝试2 - 失败 - 无法创建用户界面,因为尚未定义提示(reactiveValues()

library("shiny")
library("shinydashboard")
library("shinyBS")

ui <- fluidPage(
 box(
   title = span("My box",
                tipify(el = icon(name = "info-circle", lib = "font-awesome"), title = TIP$a)),
   selectInput(
     inputId = "SELECT",
     label = NULL,
     choices = c("Option1" = "Option1",
                 "Option2" = "Option2"
     ),
     multiple = FALSE
   )
 )
)
server <- function(input, output, session){
  TIP <- reactiveValues(a = "Hello world!")
}
shinyApp(ui, server)

Here是一个类似的问题,但它没有解决此处描述的问题。

1 个答案:

答案 0 :(得分:2)

可以做的是完全在服务器端创建标题。这样你就没有问题让它变得动态。这可以给你这种应用程序:

library("shiny")
library("shinydashboard")
library("shinyBS")

ui <- fluidPage(
  box(
    title = uiOutput("title"),
    selectInput(
      inputId = "SELECT",
      label = NULL,
      choices = c("Option1" = "Option1",
                  "Option2" = "Option2"
      ),
      multiple = FALSE
    )
  )
)
server <- function(input, output, session){
  TIP <- reactiveValues()
  observe({
    TIP$a <- ifelse(input$SELECT =="Option1","Hello World","Hello Mars")
  })


  output$title <- renderUI({span("My box",
                   tipify(el = icon(name = "info-circle", lib = "font-awesome"), title = TIP$a))})


}
shinyApp(ui, server)

希望它有所帮助。