加载闪亮的模板
load a template in shiny
问题: 是否有解决方法可以模拟在 server
代码中单击 actionButton
?
背景: 我有一个 shiny
应用程序,其中有很多用户应该输入的参数。应用程序的这一部分分为几个 UI,每个都是用 renderUI
创建的。一开始,用户只看到第一个UI。一旦她填写了字段,她应该点击一个 actionButton
并且第二个 UI 是动态生成的,第二个 UI 的字段和文本取决于内容第一个 UI.
的字段
一旦用户填写了两个 UI,我希望她能够将所有字段的内容保存为模板,并在她下次使用该应用程序时加载该模板。保存是通过简单地将所有值以结构化方式写入 csv
实现的,加载是使用 update*
函数(例如 updateNumericInput
、updateTextInput
等)完成的。 .
问题是我不得不以某种方式模拟 actionButton
上的点击,因为在加载模板时,第二个 UI 尚未创建。将对模板上传按钮的依赖添加到第二个 UI 没有帮助,因为第二个 UI 需要第一个的一些值。
您可以使用一个简短的 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 的交互
问题: 是否有解决方法可以模拟在 server
代码中单击 actionButton
?
背景: 我有一个 shiny
应用程序,其中有很多用户应该输入的参数。应用程序的这一部分分为几个 UI,每个都是用 renderUI
创建的。一开始,用户只看到第一个UI。一旦她填写了字段,她应该点击一个 actionButton
并且第二个 UI 是动态生成的,第二个 UI 的字段和文本取决于内容第一个 UI.
一旦用户填写了两个 UI,我希望她能够将所有字段的内容保存为模板,并在她下次使用该应用程序时加载该模板。保存是通过简单地将所有值以结构化方式写入 csv
实现的,加载是使用 update*
函数(例如 updateNumericInput
、updateTextInput
等)完成的。 .
问题是我不得不以某种方式模拟 actionButton
上的点击,因为在加载模板时,第二个 UI 尚未创建。将对模板上传按钮的依赖添加到第二个 UI 没有帮助,因为第二个 UI 需要第一个的一些值。
您可以使用一个简短的 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 的交互