【发布时间】:2017-03-28 19:05:51
【问题描述】:
我正在使用闪亮的包来构建一个工具的网络版本。在提供输出之前,必须对用户输入进行验证。其中一项验证需要刷新工具。
为了完成这项工作,我尝试在名为“显示结果”的操作按钮中使用“session$reload”。
虽然 session$reload 在响应式按钮中运行良好,但我需要一种无需完成代码序列即可重置会话的方法。
工作会话重新加载
server <- function(input, output, session) {
{ #Test Door Identification Server
#Refresh button
observeEvent(input$refresh, {
session$reload()
})
需要立即重置 session$code 的一段代码
library(shiny)
ui <- fluidPage(
actionButton('switchtab',"Click this"),
textOutput('code_ran')
)
server <- function(input, output, session){
observeEvent(input$switchtab,{
aggg_result = -1
if(aggg_result == -1)
{
session$reload()
print("session reload not working")
}
print("Code running this line")
output$code_ran <- renderText("code Ran this line without refreshing")
})
}
shinyApp(ui = ui, server = server)
这个函数的输出: 打印“重新加载不起作用”并继续执行其余语句。
我了解 session$reload 的工作原理,但是有没有办法在不打印“运行此行的代码”的情况下进行重置?
任何方向/建议都将受到欢迎。
问候, 韦维克S
【问题讨论】:
-
我没有看到任何不一致的行为。例如,我从来没有看到
output$code_ran文本一直存在(但我确实看到它短暂闪烁)。如果我在服务器声明之后(observeEvent之前)添加一个print("initiailizing")语句,我总是在单击该按钮后最后得到它,这表明会话在observeEvent运行后重新初始化。 -
也许添加
sessionInfo()的输出也会对我们有所帮助。 -
我使用“session$reload”的目的是重置应用程序并重新启动它。此外,如果满足条件“aggg_result”,我不希望代码继续进行。在我的原始代码中,下一行抛出错误,应用程序正在关闭而不刷新。
-
好吧,无论如何,我看到的绝对不是“不一致”。你是什么意思?我认为它按设计工作。
-
也许您需要将问题编辑为“需要立即重新加载会话的方法”并摆脱不一致的声明。
标签: r session shiny shiny-server