我正在使用由filter_slider过滤的地图和数据表之间共享的反应性数据。
使用地图或数据表进行过滤有效,但是,当移动滑块时,它似乎首先起作用-它会根据需要过滤地图和数据表-然后突然在重绘地图和数据表时自行重置过滤器。
与this question不同,我有意希望数据在服务器代码内是可响应的,其中数据既在ui上又在服务器之外。这是因为我希望每个用户在使用应用程序时都能拥有自己的数据集。
library(shiny)
library(crosstalk)
library(leaflet)
library(DT)
ui <- fluidPage(
# Create a filter input
uiOutput("filter_slider"),
bscols(leafletOutput("map"), DTOutput("table"))
)
server <- function(input,output) {
my_data <- reactive(quakes[sample(nrow(quakes), 100),])
shared_data <- SharedData$new(my_data)
output$filter_slider <- renderUI({
filter_slider("mag", "Magnitude", shared_data, column="mag", step=0.1, width=250)
})
output$map <- renderLeaflet({ leaflet(shared_data) %>% addTiles() %>% addMarkers()})
output$table <- renderDT({
datatable(shared_data, extensions="Scroller", style="bootstrap", class="compact", width="100%",
options=list(deferRender=TRUE, scrollY=300, scroller=TRUE))
}, server = FALSE)
}
shinyApp(ui = ui, server = server)