Вы можете сделать следующее, но курсив отображается только в списке.
library(shiny)
ui <- fluidPage(
mainPanel(
selectizeInput(inputId = "tree", label = "Select a Tree", choices = NULL),
# Print selected tree
verbatimTextOutput("selection")
)
)
server <- function(input, output, session){
my_list <- reactive({
list(`Red Oak - Quercus rubra (11671)` = "red",
`Bur Oak - Quercus macrocarpa (2705)` = "bur")
})
observe({
updateSelectizeInput(session, "tree",
choices = my_list(),
options = list(render = I(
'{
option: function(item, escape) {
var splittedLabel = escape(item.label).split(" - ");
return "" + splittedLabel[0] + " - " + splittedLabel[1] + ""
}
}'
)))
})
output$selection <- renderPrint({
input$tree
})
}
shinyApp(ui = ui, server = server)
Я не знаю, можно ли получите стиль для выбранного варианта. Я видел эту технику здесь (но мне потребовалось некоторое время для достижения этого результата, я считаю, что документ не очень ясен).
Я также нашел, как получить стиль для выбранного варианта:
observe({
updateSelectizeInput(session, "tree",
choices = my_list(),
options = list(render = I(
'{
item: function(item, escape) {
var splittedLabel = escape(item.label).split(" - ");
return "" + splittedLabel[0] + " - " + splittedLabel[1] + ""
},
option: function(item, escape) {
var splittedLabel = escape(item.label).split(" - ");
return "" + splittedLabel[0] + " - " + splittedLabel[1] + ""
}
}'
))
)
})
Возможно, это лучше набирать html-код непосредственно в списке:
my_list <- reactive({
list(`Red Oak - Quercus rubra (11671)` = "red",
`Bur Oak - Quercus macrocarpa (2705)` = "bur")
})
, тогда код Javascript прост:
observe({
updateSelectizeInput(session, "tree",
choices = my_list(),
options = list(render = I(
'{
item: function(item, escape) {
return "" + item.label + ""
},
option: function(item, escape) {
return "" + item.label + ""
}
}'
))
)
})