R 从闪亮的书签中排除所有输入
我有一个自定义书签URL用于我的闪亮应用程序。我使用R 从闪亮的书签中排除所有输入,r,shiny,R,Shiny,我有一个自定义书签URL用于我的闪亮应用程序。我使用setBookmarkExclude()排除所有输入(即小部件)。然后我使用onBookmark()构建书签URL,并使用onRestore()恢复状态 在开发过程中,如果添加了新的小部件,它们的ID也必须添加到setBookmarkExclude()函数中。如果没有,则书签URL将更改 是否有适当的方法排除所有输入 最初我尝试了setBookmarkExclude(names(input)),但这不起作用,因为当input尚未初始化时,此函数
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()
放在服务器函数中,以便在初始化过程中执行。似乎不是这样。如果你愿意,你可以把答案贴出来。