我有一个带有一些textOutput的闪亮应用程序,该文本输出始终从值0开始,然后在单击某些按钮后随时间增加。由于我必须在应用程序启动时将其设置为0,因此我使用session $ onFlushed进行设置。然后,为了使值随着时间增加,我使用invalidateLater()。好吧,问题是在我设置session $ onFlushed之前,计时器工作正常。但是,这样做之后,它停止了工作。这是一些生殖代码:
library(shiny)
vars=reactiveValues(start=F,stTime=0)
ui <- fluidPage(
fluidRow(
column(12,textOutput("cronometro")),
column(12,actionButton("start","Iniciar")
)
))
server <- function(input, output, session) {
session$onFlushed(function() {
output$cronometro=renderText({paste("00:00")})
})
observeEvent(input$start,{
vars$stTime=Sys.time()
vars$start=T
})
output$cronometro=renderText({
invalidateLater(1000,session)
if(vars$start){
paste(Sys.time()-vars$stTime)
}
})
}
shinyApp(ui, server)
如果我将session $ onFlushed注释掉,一切都会很好。
答案 0 :(得分:0)
我认为您的问题是您不应该在onFlushed
事件中更新输出。是否有参考资料,您看到什至刷新了刷新中的输出?看起来您仅应(可能)在该步骤中更新无功值。我不明白即使是执行此类任务,您也是如何偶然发现同花顺的。
但是您似乎只想更改文本输出的默认值。你为什么不只用
output$cronometro=renderText({
invalidateLater(1000,session)
if(vars$start){
Sys.time()-vars$stTime
} else {
"00:00"
}
})