setBookmarkExclude在带有DT数据表的闪亮应用上?

时间:2017-03-03 14:51:56

标签: shiny

如果我有一个闪亮的应用程序并且我有一个DT数据表,它将最终创建非常长的URL书签,我有兴趣使用setBookmarkExclude尝试删除它

有几个字段非常长,例如table_row_last_clicked table_rows_selected table_cell_all,这使得网址过长!排除像slider1这样的简单事情

http://shinyapp/?inputs&slider2=50&table_cell_clicked=%7B%22row%22%3A6%2C%22col%22%3A0%2C%22value%22%3A%226%22%7D&table_row_last_clicked=6&table_rows_all=%5B1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%5D&table_rows_selected=6&table_search=%22%22&table_state=null

ui = function(request) {
    fluidPage(
        titlePanel('test bookmarks'),
        sliderInput('slider1', 'Slider 1', 1, 100, 50),
        sliderInput('slider2', 'Slider 2', 1, 100, 50),
        DT::dataTableOutput('table')
    )
}

server = function(input, output, session) {
    setBookmarkExclude('table')
    setBookmarkExclude('slider1')
    output$table = DT::renderDataTable({
        data.frame(a = 1:10, b = 11:20)
    })

    observeEvent(input$table_rows_selected, {
        session$doBookmark()
    })
    onBookmarked(function(url) {
        updateQueryString(url)
    })
}

shinyApp(ui, server, enableBookmarking = 'url')

1 个答案:

答案 0 :(得分:1)

有几件事:

  • 您只能拨打setBookmarkExclude一次,您应该将所有输入的名称作为字符向量传递出去。

  • DT将始终将这些存储为输入,因此您可以先验地知道它们的名称。为什么不这样做:

    setBookmarkExclude(c('slider1', "table_rows_current", "table_cell_clicked", "table_search", "table_rows_selected", "table_rows_all", "table_state"))

相关问题