Я написал этот код для применения класса редактора в текстовом поле с id = "textBox". Для применения класса редактора требуется код javascript для запуска и поиск способа привязки javascript к событию запуска приложения (или при загрузке приложения). По сути, я хотел бы запустить js, когда приложение загружается без необходимости привязывать его к нажатию кнопки, поскольку оно в настоящее время реализовано. Я не знаю, как обращаться к событию загрузки приложения. Реализация кнопки была лучшей, с которой я мог придумать, и потратил немало времени, прежде чем спрашивать.
Обратитесь к этому вопросу за информацией о том, как запустить код.
Сообщите мне, если вам нужна дополнительная информация об этом. Был бы рад помочь. Заранее спасибо.
library(shiny)
library(shinyjs)
if (interactive()) {
ui <- shinyUI(
fluidPage(
useShinyjs(),
tags$head(tags$title("Title"),
tags$link(rel = "stylesheet", href = "codemirror.css"),
tags$link(rel = "stylesheet", href = "cobalt.css"),
tags$script(src = "codemirror.js"),
tags$script(src = "r.js")
),
actionButton("btn1","Click to see code"),
uiOutput(outputId = "textStringToDisplay")))
server <- function(input, output){
output$textStringToDisplay <- renderUI(
tags$textarea(id="textBox", name = "Feedback", paste0(sample(letters,15),collapse = "")))
ButtonPressCounter <- 0
observeEvent(input$btn1,
{
ButtonPressCounter <<- ButtonPressCounter + 1 # Need it to happen only once
if(ButtonPressCounter <= 1){
shinyjs::runjs(
'var editorR = CodeMirror.fromTextArea(textBox, {
mode: "r",
lineNumbers: true,
smartindent: true});
editorR.setOption("theme", "cobalt");
editorR.setSize("100%","100%");')
}
})
}
shinyApp(ui = ui, server = server) }
Чтобы запустить javascript-код при открытии приложения, вам не нужно помещать код в наблюдателя. Если вы замените свой сервер на следующий код, вы увидите, что в журнале будет строка "hello, this code has run."
server <- function(input, output){
output$textStringToDisplay <- renderUI(
tags$textarea(id="textBox", name = "Feedback", paste0(sample(letters,15),collapse = "")))
shinyjs::runjs(
'console.log("hello, this code has run.");
var editorR = CodeMirror.fromTextArea(textBox, {
mode: "r",
lineNumbers: true,
smartindent: true});
editorR.setOption("theme", "cobalt");
editorR.setSize("100%","100%");')
}
Хотя следующая строка в журнале - ReferenceError: Can't find variable: CodeMirror
, поэтому, я думаю, что что-то не хватает в вашем коде?
Надеюсь это поможет!