我已经构建了一个Shiny应用程序,用于显示公立学区和学校的信息。起始侧边栏只是为用户提供从多边形(学区,县和邮政编码)或点(学校,学院,企业)中进行选择的功能。选择“学区”后,侧边栏将显示一个SelectInput以及学区列表。选择一个区后,ANOTHER条件面板将显示一个SelectInput及其校园列表。以下是两个条件面板的代码。注意“阵营”面板的“选择”为空。
conditionalPanel(condition = "output.districts",
selectizeInput(inputId = "schdist", label = "Choose a District:", choices = district_options,
multiple = FALSE, options = list(placeholder = 'Select one',
onInitialize = I('function() { this.setValue(""); }')))),
conditionalPanel(condition= "output.districts",
conditionalPanel(condition = "input.schdist != ''",
selectizeInput(inputId = "camp", label = "Campuses:",
choices = "",
multiple = F,
options = list(placeholder = 'Select one',
onInitialize = I('function() { this.setValue(""); }')))) ),
以下是反应性变量并观察事件,这些事件会更新“营地”选择:
school_choices <- reactive({
dist <- district_data[district_data@data$NAME == input$schdist, ]
choices <- campus_data[(campus_data$DISTNAME %in% dist@data$NAME), ]
choices <- choices$CAMPNAME
return(sort(choices))
})
observe({
updateSelectInput(session, "camp", choices = school_choices())})
此代码都可以正常工作。但是,我的Leaflet映射中也有单击事件,它们会更新不同的SelectInput(然后触发应用程序的其他功能来显示等)。当前,在我的应用程序中,从应用程序的开始,用户可以选择“ ISD校园”来显示在传单地图上。当用户单击这些标记之一时,我想更新“ schdist”输入和“ camp”输入。我现在使用的代码可以更新“ schdist”并显示“ camp”输入的正确选择,但是不会更新“ camp”输入,因为selected = click $ id。 当前是这样写的:
observeEvent(input$baseMap_marker_click, {
click <- input$baseMap_marker_click
if(click$id %in% campus_data$CAMPNAME) {
df = campus_data[campus_data$CAMPNAME == click$id,]
updateSelectizeInput(session, "polygons", selected="Independent School Districts")
updateSelectizeInput(session, "schdist", selected= df$DISTNAME)
updateSelectizeInput(session, "camp", selected=click$id)
}
})
我也尝试过:
if(click$id %in% campus_data$CAMPNAME) {
df = campus_data[campus_data$CAMPNAME == click$id,]
updateSelectizeInput(session, "polygons", selected="Independent School Districts")
updateSelectizeInput(session, "schdist", selected= df$DISTNAME)
if(is.null(input$camp)){
updateSelectizeInput(session, "camp", selected=click$id)
}
但是它的行为方式相同。
那么我可以更新对另一个updateSelectInput有反应的updateSelectInput吗?