R 从闪亮的书签中排除所有输入

R 从闪亮的书签中排除所有输入,r,shiny,R,Shiny,我有一个自定义书签URL用于我的闪亮应用程序。我使用setBookmarkExclude()排除所有输入(即小部件)。然后我使用onBookmark()构建书签URL,并使用onRestore()恢复状态 在开发过程中,如果添加了新的小部件,它们的ID也必须添加到setBookmarkExclude()函数中。如果没有,则书签URL将更改 是否有适当的方法排除所有输入 最初我尝试了setBookmarkExclude(names(input)),但这不起作用,因为当input尚未初始化时,此函数

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

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

是否有适当的方法排除所有输入

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


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

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

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

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

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)
库(闪亮)

ui请检查我提供的白名单方法。尽管我不确定这对你的具体情况是否有帮助,因为你没有提供任何例子。@ismirsehregal,你的回答给了我这样做的想法:
observe({setBookmarkExclude(names(input))},priority=100,autoDestroy=TRUE)
。根据文档,我认为我必须将
setBookmarkExclude()
放在服务器函数中,以便在初始化过程中执行。似乎不是这样。如果你愿意,你可以把答案贴出来。