我在闪亮的App中有ui.R
,server.R
,global.R
。
当我选择dataset
并按actionButton
时,我想使用反应式全局变量。
示例:
ui.R
fluidPage(
titlePanel("Using global variable"),
fluidRow(
uiOutput("ui1"),
uiOutput("ui2"),
uiOutput("ui3")
),
)
)
server.R
function(input, output) {
output$ui1 <- renderUI({
selectInput("dataset", "firstValue", choices = c("first", "second", "third")
})
output$ui2 <- renderUI({
actionButton("doIt", class="btn-primary", "change")
})
output$ui3 <- renderText({
paste(catPath)
})
}
global.R
catPath <<- paste(output$dataset, "/completed", sep="")
当我在first/completed
中选择ui3 renderText
时,first
上的结果为dataset
。然后按actionButton
。
如何完成此过程?
答案 0 :(得分:3)
我同意@JohnPaul和@ Lee88,你的catPath
可能属于server.R
。话虽如此,我现在暂时保留它(假设你的MWE中还有其他原因)。
<强> global.R
强>:
catPath <- ""
我需要将它设置为某种东西以便以后可以引用,否则这里使用的值应该没有意义(尽管如果不采取任何措施它将被返回)。
<强> ui.R
强>:
我添加了“停止?”操作按钮,以便您可以“退出”您的应用并将catPath
的值捕获到调用环境中。如果您不打算故意退出应用程序,则不需要。
fluidPage(
titlePanel("Using global variable"),
fluidRow(
uiOutput("ui1"),
uiOutput("ui2"),
uiOutput("ui3"),
actionButton("stopme", "Stop?")
)
)
<强> server.R
强>:
我更改output$ui3
以创建HTML对象(不执行计算),然后观察两个事件并对其进行操作。再说一次,如果你不需要“停止?”上面的按钮,你可能不需要在这里观察第二个。 (如果您确实使用它,请注意stopApp
的参数将无形地返回给调用者。)
function(input, output, session) {
output$ui1 <- renderUI({
selectInput("dataset", "firstValue", choices = c("first", "second", "third"))
})
output$ui2 <- renderUI({
actionButton("doIt", class="btn-primary", "change")
})
output$ui3 <- renderUI({
textInput("myinput", "catPath", "")
})
observeEvent(input$doIt, {
catPath <<- paste(input$dataset, "/completed", sep = "")
updateTextInput(session, inputId = "myinput", value = catPath)
})
observeEvent(input$stopme, { stopApp(catPath); })
}
执行newCatPath <- runApp("path/to/dir")
之类的内容。