Я модулирую свое приложение R Shiny с помощью пользовательских функций Javascript, используя пакет shinyjs
.Я нахожу определяющие параметры для js$functionName(params)
полезными и хотел бы также использовать его для shinyjs.init()
, который автоматически вызывается при первоначальной загрузке приложения.
Уточнение с комментарием JohnCoene:
Из приведенного ниже кода я хочу использовать customMessage
, определенный в R, используемый в shinyjs.init()
.Я хочу этого, потому что у меня есть предопределенный скрипт, который включает все жестко запрограммированные переменные, включая имена классов HTML и идентификаторы.Я не хочу определять другую переменную в shinyjs.init()
.
Пожалуйста, обратитесь к воспроизводимому примеру, используя коды с официальной страницы smoothjs ниже:
library(shiny)
library(shinyjs)
customMessage <- 'The app has been launched'
jsCode <- '
shinyjs.init = function() {
alert("I want to have a custom parameter for shinyjs.init()!");
}
shinyjs.backgroundCol = function(params) {
var defaultParams = {
id : null,
col : "red"
};
params = shinyjs.getParams(params, defaultParams);
console.log(params);
var el = $("#" + params.id);
el.css("background-color", params.col);
}'
shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode),
p(id = "name", "My name is Dean"),
p(id = "sport", "I like soccer"),
selectInput("col", "Colour:",
c("white", "yellow", "red", "blue", "purple")),
textInput("selector", "Element", ""),
actionButton("btn", "Go")
),
server = function(input, output) {
observeEvent(input$btn, {
js$backgroundCol(input$selector, input$col)
})
}
)