Как выделить курсивом только часть ввода на R Shiny? [Дубликат]

Функция «ввода» преобразует введенный вами вход, как если бы это был код python. «raw_input» не преобразует входной сигнал и берет ввод, как он задан. Целесообразно использовать raw_input для всего. Использование:

>>a = raw_input()
>>5
>>a
>>'5'
2
задан ixodid 6 July 2018 в 23:58
поделиться

1 ответ

Вы можете сделать следующее, но курсив отображается только в списке.

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 "<div>" + splittedLabel[0] + " - <i>" + splittedLabel[1] + "</i></div>"
    }
  }'
                         )))
  })

  output$selection <- renderPrint({
    input$tree
  })
}

shinyApp(ui = ui, server = server)

Я не знаю, можно ли получите стиль для выбранного варианта. Я видел эту технику здесь (но мне потребовалось некоторое время для достижения этого результата, я считаю, что документ не очень ясен).

EDIT

Я также нашел, как получить стиль для выбранного варианта:

  observe({
    updateSelectizeInput(session, "tree", 
                         choices = my_list(),
                         options = list(render = I(
                           '{
    item: function(item, escape) {
      var splittedLabel = escape(item.label).split(" - ");
      return "<div>" + splittedLabel[0] + " - <i>" + splittedLabel[1] + "</i></div>"
    },
    option: function(item, escape) {
      var splittedLabel = escape(item.label).split(" - ");
      return "<div>" + splittedLabel[0] + " - <i>" + splittedLabel[1] + "</i></div>"
    }
  }'
                         ))
    )
  })

EDIT 2

Возможно, это лучше набирать html-код непосредственно в списке:

  my_list <- reactive({
    list(`Red Oak - <i>Quercus rubra</i> (11671)` = "red",
         `Bur Oak - <i>Quercus macrocarpa</i> (2705)` = "bur")
  })

, тогда код Javascript прост:

  observe({
    updateSelectizeInput(session, "tree", 
                         choices = my_list(),
                         options = list(render = I(
                           '{
                           item: function(item, escape) {
                           return "<div>" + item.label + "</div>"
                           },
                           option: function(item, escape) {
                           return "<div>" + item.label + "</div>"
                           }
  }'
                         ))
                         )
    })
2
ответ дан Stéphane Laurent 16 August 2018 в 10:52
поделиться
  • 1
    Отлично сработано!. Большое спасибо. – ixodid 9 July 2018 в 21:02
  • 2
    @ixodid Добро пожаловать. Я только что добавил редактирование в свой ответ. – Stéphane Laurent 10 July 2018 в 09:45
Другие вопросы по тегам:

Похожие вопросы: