如果我在服务器文件中使用session$sendCustomMessage命令并输入三项内容的列表,如何访问message-handler.js文件中的三项不同内容?

说我的电话看起来像这样:

session$sendCustomMessage(type='testmessage', message=list(pid=pid, cid=cid, query=sql))

在我的.js文件中,我想分别使用pid,cid和query,有关如何执行此操作的任何想法?

谢谢!!

最佳答案

您可以使用message.pid, message.cid等访问它们。列表以JSON形式传递。从http://shiny.rstudio.com/gallery/server-to-client-custom-messages.html改编的示例:

library(shiny)
runApp(
  list(ui = fluidPage(
    titlePanel("sendCustomMessage example"),
    fluidRow(
      column(4, wellPanel(
        sliderInput("controller", "Controller:",
                    min = 1, max = 20, value = 15),
        singleton(
          tags$head(tags$script('Shiny.addCustomMessageHandler("testmessage",
  function(message) {
    alert("The b variable is " + message.b);
  }
);'))
        )
      ))
    )
  )
  , server = function(input, output, session){
    observe({
      session$sendCustomMessage(type = 'testmessage',
                                message = list(a = 1, b = 'text',
                                               controller = input$controller))
    })
  })
)

10-08 04:45