【问题标题】:Exclude all inputs from Shiny bookmarks从闪亮的书签中排除所有输入
【发布时间】:2019-06-21 18:15:46
【问题描述】:

我的闪亮应用有一个自定义书签 URL。我使用setBookmarkExclude() 排除所有输入(即小部件)。然后我用onBookmark()建立书签URL,用onRestore()恢复状态。

在开发过程中,如果添加了新的小部件,它们的 ID 也必须添加到 setBookmarkExclude() 函数中。如果没有,那么书签 URL 将会改变。

有排除所有输入的正确方法吗?

最初我尝试了setBookmarkExclude(names(input)),但这不起作用,因为当input 尚未初始化时,此函数是从应用程序的服务器函数内部调用的。

显然,相反的函数setBookmarkInclude(NULL) 会是理想的吗?

【问题讨论】:

  • 请检查我提供的白名单方法here。即使我不确定它是否对您的具体情况有所帮助,因为您没有提供任何示例。
  • @ismirsehregal,你的回答给了我这样做的想法:observe({setBookmarkExclude(names(input))}, priority = 100, autoDestroy = TRUE) 有效。从文档中我认为我必须将setBookmarkExclude() 放在服务器函数中,以便在初始化期间执行。似乎不是这样。如果你愿意,你可以发布你的答案。

标签: r shiny


【解决方案1】:

您已经提到使用setBookmarkExclude(names(input)),这是正确的方法。

关键是动态使用包裹在观察者中的setBookmarkExclude

这是我的回答 here 的修改版本,展示了如何排除动态生成的输入:

library(shiny)

ui <- function(request) {
  fluidPage(
    br(),
    bookmarkButton(id = "bookmarkBtn"),
    actionButton(inputId = "addSlider", label = "Add slider..."),
    hr(),
    textOutput("ExcludedIDsOut"),
    hr(),
    sliderInput(inputId="slider1", label="My value will be bookmarked", min=0, max=10, value=5),
    uiOutput("slider2")
  )
}

server <- function(input, output, session) {

  bookmarkingWhitelist <- c("slider1")

  observeEvent(input$bookmarkBtn, {
    session$doBookmark()
  })

  ExcludedIDs <- reactiveVal(value = NULL)

  observe({
    toExclude <- setdiff(names(input), bookmarkingWhitelist)
    setBookmarkExclude(toExclude)
    ExcludedIDs(toExclude)
  })

  output$ExcludedIDsOut <- renderText({ 
    paste("ExcludedIDs:", paste(ExcludedIDs(), collapse = ", "))
  })

  observeEvent(input$addSlider, {
    output$slider2 <- renderUI({ 
      sliderInput(inputId="slider2", label="My value will not be bookmarked", min=0, max=10, value=5)
    })
  }, once = TRUE)

}

enableBookmarking(store = "url")
shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多