Shiny:从自己的JS脚本访问输入对象

时间:2017-12-09 22:42:04

标签: javascript r shiny

conditionalPanel arg中的Shiny condition中,可以访问JS input对象,因此在具有例如numericInput("num", label = h3("Numeric input"), value = 1)窗口小部件的情况下,可以访问此窗口小部件的值在condition JS表达式中通过input.num

问题是如何以相同的方式访问自己的JS脚本中的input对象(在Shiny应用程序中启动),或者只是从Shiny应用程序页面上打开的浏览器控制台访问?

1 个答案:

答案 0 :(得分:2)

最好的方法可能是听Cppcon 2016 presentation

library(shiny)

shinyApp(
  ui = fluidPage(
    tags$head(tags$script("
      $(document).on('shiny:inputchanged', function(event) {
        console.log(event);
        console.log('[input] ' + event.name + ': ' + event.value);
      });
    ")),
    numericInput("num", "", 0, 0, 5),
    textInput("txt", ""),
    actionButton("action", "Action")
  ),
  server = function(input, output) {}
)

您还可以使用shiny:inputchanged eventsShiny.addCustomMessageHandler从服务器发回输入值。

未经证实的,更不推荐的方法是直接通过Shiny.shinyapp.$inputValues访问输入值,name:type是一个在{ "action:shiny.action": 4, "num:shiny.number": 2, "txt": "text" } 键下存储值的对象:

readr::type_convert