Restart Shiny Session

十年热恋 提交于 2019-11-28 08:29:08
bubble

You can use the history.go(0) js-method to reload the page and thus reset the session, e.g. from a link:

p(HTML("<A HREF=\"javascript:history.go(0)\">Reset this page</A>"))

Furthermore you can use the shinyjs package to execute javascript from within the server:

library(shiny)
library(shinyjs)

jsResetCode <- "shinyjs.reset = function() {history.go(0)}" # Define the js method that resets the page

shinyApp(
  ui = fluidPage(
    useShinyjs(),                                           # Include shinyjs in the UI
    extendShinyjs(text = jsResetCode),                      # Add the js code to the page
    actionButton("reset_button", "Reset Page")
  ),

  server = function(input, output) {
    observeEvent(input$reset_button, {js$reset()})          # Call the method from
                                                            # somewhere within the server
  })

You can add a refresh icon and popover to your app by including the following in your ui code:

library(shinyBS)

tags$a(href="javascript:history.go(0)", 
           popify(tags$i(class="fa fa-refresh fa-5x"),
                  title = "Reload", 
                  content = "Click here to restart the Shiny session",
                  placement = "right"))

It should give you this:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!