Javascript shinyBS中的动态弹出框或工具提示
想法 我在一个闪亮的应用程序中有一个Javascript shinyBS中的动态弹出框或工具提示,javascript,r,shiny,shinybs,Javascript,R,Shiny,Shinybs,想法 我在一个闪亮的应用程序中有一个box()。框()包括一个标题参数(该参数又包括一个图标)和一个选择输入()元素。在胡佛的图标上,我想有一个工具提示(使用tipify())或一个弹出框(使用popify()),根据selectInput()输入生成title或content参数(或两者) 问题 无论是tipify()还是popify()都不能正确地将textOutput()作为其标题或内容参数来实现。它们需要一个字符串,所以我尝试使用reactiveValues()元素作为函数参数,但也失败
box()
。框()
包括一个标题
参数(该参数又包括一个图标
)和一个选择输入()
元素。在胡佛的图标上,我想有一个工具提示(使用tipify()
)或一个弹出框(使用popify()
),根据selectInput()
输入生成title
或content
参数(或两者)
问题
无论是tipify()
还是popify()
都不能正确地将textOutput()
作为其标题或内容
参数来实现。它们需要一个字符串,所以我尝试使用reactiveValues()
元素作为函数参数,但也失败了
问题
只需使用r
,工具提示或popover内容是否可以变得动态?这怎么可能呢
我怀疑它可以通过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)
是一个类似的问题,但它不能解决这里描述的问题。可以做的是完全在服务器端创建标题。这样,您就可以将其动态化。这可以为您提供此类应用程序:
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)
库(“闪亮”)
图书馆(“shinydashboard”)
图书馆(“shinyBS”)
ui很奇怪,但是如果您选择选项1并查看工具提示,然后更改选项2,工具提示中没有显示任何内容(可能只是在我的R中),您必须等待一段时间,因为更新是通过观察({})
完成的。但它肯定在我的R中工作。你能重试并确认plz吗?代码确实工作,因此是问题的解决方案。事实上,这一进程相对缓慢,仍有改进的余地。谢谢你的回答。我不知道你是否能改进很多。如果将图标设置为动态的图标(name=ifelse(输入$SELECT==“Option1”、“info circle”、“ban”)
,结果几乎是即时的。似乎文本在快速更新时遇到了更多问题。
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)