shinyBS 中的动态弹出窗口或工具提示
Dynamic popover or tooltip in shinyBS
想法
我在闪亮的应用程序中有一个 box()
。 box()
包含一个 title
参数(它又包含一个 icon
)和一个 selectInput()
元素。在 icon
上悬停时,我想要一个工具提示(使用 tipify()
)或一个弹出窗口(使用 popify()
),其中 title
或 content
参数(或两者都有) 将根据 selectInput()
输入生成。
问题
tipify()
和 popify()
都没有正确地实现 textOutput()
作为他们的 title
或 content
参数。他们需要一个字符串,所以我尝试使用 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 - 失败 - 无法创建 UI,因为 TIP (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 是一个类似的问题,但它没有解决这里描述的问题。
可以做的是完全在服务器端创建标题。这样你就可以毫无问题地使其动态化。这可以为您提供此类应用程序:
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)
希望对您有所帮助。
想法
我在闪亮的应用程序中有一个 box()
。 box()
包含一个 title
参数(它又包含一个 icon
)和一个 selectInput()
元素。在 icon
上悬停时,我想要一个工具提示(使用 tipify()
)或一个弹出窗口(使用 popify()
),其中 title
或 content
参数(或两者都有) 将根据 selectInput()
输入生成。
问题
tipify()
和 popify()
都没有正确地实现 textOutput()
作为他们的 title
或 content
参数。他们需要一个字符串,所以我尝试使用 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 - 失败 - 无法创建 UI,因为 TIP (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 是一个类似的问题,但它没有解决这里描述的问题。
可以做的是完全在服务器端创建标题。这样你就可以毫无问题地使其动态化。这可以为您提供此类应用程序:
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)
希望对您有所帮助。