加载闪亮的模板

时间:2015-07-13 13:31:43

标签: r shiny

问题:我是否可以在actionButton代码中模拟点击server

背景:我有一个shiny个应用,其中有一些用户应该输入的参数。应用的这一部分分为几个UI,每个人都使用renderUI创建。开始时,用户只能看到第一个UI。一旦她填写了字段,她就应该点击actionButton并动态生成第二个UI,其中第二个UI的字段和文本取决于第一个UI字段的内容。

一旦用户填写了两个UI,我希望她能够将所有字段的内容保存为模板,并在下次使用该应用程序时加载模板。实现保存只需将所有值以结构化方式写入csv,然后使用update* - 函数(例如updateNumericInputupdateTextInput等)完成加载。

问题在于我以某种方式模拟了actionButton上的点击,因为在加载模板时,第二个UI还没有被创建。将模板上传按钮的依赖性添加到第二个UI没有任何帮助,因为第二个UI需要来自第一个UI的一些值。

1 个答案:

答案 0 :(得分:1)

您可以使用简短的javascript函数来完成此操作,该函数只需调用click() JS函数。这是一个简短的简单闪亮的应用程序,演示了如何做到这一点。

library(shiny)
library(shinyjs)

jscode <- "shinyjs.click = function(id) { $('#' + id).click(); }"

runApp(shinyApp(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode),
    actionButton("btn1", "When you click me, I print the time"),
    actionButton("btn2", "When you click me, I'll click the other button")
  ),
  server = function(input, output, session) {
    observeEvent(input$btn1, {
      print(Sys.time())
    })
    observeEvent(input$btn2, {
      js$click("btn1")
    })
  }
))

请注意,我正在使用shinyjs包与JS easy

进行交互