在带有 R shiny 的 selectizeInput 中使用 html
use html in selectizeInput with R shiny
我想在 select(ize)Input 的选项中使用一些 html。有谁知道一个简单的解决方案如何告诉 shiny 将选项视为 HTML?
library(shiny)
ui <- fluidPage(
selectInput("test html use", label = "option", choices = c("<div title = 'This is option A'>opt A</div>", "opt B"))
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
为了将 selectizeInput
的选项视为 HTML,render
选项是可行的方法。以下代码将呈现普通输出:
library(shiny)
shinyApp(
ui = fluidPage(
br(),
selectizeInput(
"slctz", "Select something:",
choices = list("option1" = "value1", "option2" = "value2"),
options = list(
render = I("{
item: function(item, escape) {
return '<span>' + item.label + '</span>';
},
option: function(item, escape) {
return '<span>' + item.label + '</span>';
}
}")
)
)
),
server = function(input, output) {}
)
option
字段用于选项列表,而 item
字段用于所选选项。
因此,如果您想要设置选项和所选选项的样式,您可以通过向 span
元素添加 class
属性并定义 CSS 类 在 UI:
ui = fluidPage(
tags$head(
tags$style(
HTML(
"
.myoption {......}
.myitem {......}
"
)
)
),
br(),
selectizeInput(
"slctz", "Select something:",
choices = list("option1" = "value1", "option2" = "value2"),
options = list(
render = I("{
item: function(item, escape) {
return '<span class=\"myitem\">' + item.label + '</span>';
},
option: function(item, escape) {
return '<span class=\"myoption\">' + item.label + '</span>';
}
}")
)
)
)
我想在 select(ize)Input 的选项中使用一些 html。有谁知道一个简单的解决方案如何告诉 shiny 将选项视为 HTML?
library(shiny)
ui <- fluidPage(
selectInput("test html use", label = "option", choices = c("<div title = 'This is option A'>opt A</div>", "opt B"))
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
为了将 selectizeInput
的选项视为 HTML,render
选项是可行的方法。以下代码将呈现普通输出:
library(shiny)
shinyApp(
ui = fluidPage(
br(),
selectizeInput(
"slctz", "Select something:",
choices = list("option1" = "value1", "option2" = "value2"),
options = list(
render = I("{
item: function(item, escape) {
return '<span>' + item.label + '</span>';
},
option: function(item, escape) {
return '<span>' + item.label + '</span>';
}
}")
)
)
),
server = function(input, output) {}
)
option
字段用于选项列表,而 item
字段用于所选选项。
因此,如果您想要设置选项和所选选项的样式,您可以通过向 span
元素添加 class
属性并定义 CSS 类 在 UI:
ui = fluidPage(
tags$head(
tags$style(
HTML(
"
.myoption {......}
.myitem {......}
"
)
)
),
br(),
selectizeInput(
"slctz", "Select something:",
choices = list("option1" = "value1", "option2" = "value2"),
options = list(
render = I("{
item: function(item, escape) {
return '<span class=\"myitem\">' + item.label + '</span>';
},
option: function(item, escape) {
return '<span class=\"myoption\">' + item.label + '</span>';
}
}")
)
)
)