如何在R中为Shinyjs :: shinyjs.init()函数添加输入参数?

时间:2018-11-14 23:17:25

标签: javascript r shiny shinyjs

我正在使用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)
    })
  }
)

0 个答案:

没有答案