我正在使用shinyjs
软件包使用自定义Javascript函数对R Shiny应用程序进行模块化。我发现为js$functionName(params)
定义参数很有用,并且还希望将其用于shinyjs.init()
,该参数在最初加载应用程序时会自动调用。
对JohnCoene的评论进行澄清:
从下面的代码中,我想使用customMessage
中使用的R中定义的shinyjs.init()
。我之所以这样,是因为我有一个预定义的脚本,其中包含所有硬编码的变量,包括HTML类名称和ID。我不想在shinyjs.init()
中定义另一个变量。
请使用来自 下方的shinyjs official page:
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)
})
}
)