2016-10-13 7 views
1

Я пытаюсь создать реактивное блестящее приложение, которое может выделять текст, когда я выбираю элемент (пару слов) из datatable. У меня есть работающий по дате выбор. Я использую функцию includeHTML() для включения и отображения текстового файла.Как выделить текст, отображаемый includeHTML

Можно ли выделить все элементы, выбранные из подлежащих обработке, в тексте, отображаемом includeHTML()?

+0

Это, безусловно, возможно. Вспомогательный пример поможет. – Carl

ответ

3

Если вы хотите сделать это для любого произвольного HTML-файла, это, вероятно, не сработает, но вот чистое R-решение. Вероятно, вам будет лучше с помощью javascript-решения:

library(shiny) 
library(DT) 

ui <- shinyUI(fluidPage(mainPanel(
    DT::dataTableOutput("test"), 
    htmlOutput("html") 
))) 

server <- shinyServer(function(input, output, session) { 
    words <- data.frame(stringsAsFactors = FALSE, 
         words = c("the", "hello", "world")) 
    output$test <- DT::renderDataTable({ 
    words 
    }, selection = list(mode = "single", target = "row")) 

    text <- "This is the hello world example for this problem." 

    output$html <- renderUI({ 
    if (is.null(input$test_rows_selected)) 
     return(HTML(text)) 

    HTML(gsub(
     words$words[input$test_rows_selected], 
     paste0("<mark>", 
      words$words[input$test_rows_selected], 
      "</mark>"),text)) 
    }) 
}) 

shinyApp(ui = ui, server = server)