闪亮:updateSelectizeInput依赖于另一个updateSelectInput / ConditionalPanel

时间:2019-02-27 22:20:28

标签: r shiny dashboard selectinput

我已经构建了一个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吗?

0 个答案:

没有答案