【问题标题】:Page refresh Button in R shinyR中的页面刷新按钮闪亮
【发布时间】:2016-03-12 14:28:17
【问题描述】:

我尝试在链接here 之后实现页面刷新按钮。但是,当我尝试部署到shinyapp.io 时,它失败并要求安装我已经完成的包V8。该应用程序在机器上运行良好。我使用的代码是:

jsResetCode <- "shinyjs.reset = function() {history.go(0)}",

useShinyjs(), # Include shinyjs in the UI

extendShinyjs(text = jsResetCode), # Add the js code to the page   

p(actionButton("reset_button", "Reset Tool"))

server.R:

observeEvent(input$reset_button, {js$reset()}) 

没有shinyjs,有什么办法可以做到这一点?

【问题讨论】:

  • 阅读 shinyjs readme 中的“关于 V8 先决条件的说明”。 “如果您正在将使用extendShinyjs 的应用程序部署到shinyapps.io,那么您需要在代码中的某处添加对库(V8)的调用。这是必要的,因为shinyapps.io 服务器需要知道它应该安装V8 包. 如果你不这样做,那么你只会看到一个错误,说包丢失。”
  • 我只在一开始就调用了 V8。即使在shinyapps.io中部署后它也无法正常工作
  • “我只在一开始就叫它”是什么意思?代码中是否有 library(V8) 调用?如果是这样,你应该没有任何问题
  • 是的,它奏效了。不知何故,它最初不起作用。可能是刷新问题
  • 也许您愿意接受 Dean Attali 的回答。当前版本包含非shinyjs 刷新页面的方式。

标签: r shiny shinyjs


【解决方案1】:

为了完整起见,下面的代码是一个使用“刷新”按钮的 Shiny 应用的最小示例

library(shiny)
library(shinyjs)

jscode <- "shinyjs.refresh = function() { history.go(0); }"

ui <- fluidPage(
  useShinyjs(),
  extendShinyjs(text = jscode),
  textInput("text", "Text"),
  actionButton("refresh", "Refresh app")
)

server <- function(input, output, session) {
  observeEvent(input$refresh, {
    js$refresh();
  })
}

shinyApp(ui = ui, server = server)

编辑:从闪亮版本0.13.0开始,可以使用闪亮的session$reload()函数刷新页面

【讨论】:

  • 您好,感谢您的意见,我也有同样的问题,按照您的回答效果很好。我想知道如何实现您的代码以在多个选项卡上创建页面刷新按钮。我在这里发布了我的问题:stackoverflow.com/questions/55262781/…。非常感谢您的帮助!
  • 编辑很有帮助:只需使用 session$reload()
  • 是的,喜欢编辑。我会把它放在顶部,这样人们就会看到它。我开始安装shinyjs 哈哈
猜你喜欢
  • 2019-08-11
  • 2021-02-26
  • 1970-01-01
  • 2015-04-29
  • 2015-04-26
  • 1970-01-01
  • 2020-10-25
  • 2016-09-24
  • 2013-03-22
相关资源
最近更新 更多