清除剧情点击事件

Roy*_*lTS 5 r plotly

我正在尝试在闪亮的应用程序环境中使用按图点击事件。在正式演示之后我将使用以下代码来更新日期选择器,并在单击时跳转到我的应用程序中的另一个选项卡:

observe({
  d <- event_data("plotly_click", source = 'plot')
  if(!is.null(d) & (input$navPanel == 'overview')) {

    d %>% filter(curveNumber == 0) %>% select(x) -> selected_date

    updateDateInput(session, "date", value = lubridate::ymd(selected_date$x))
    updateTabsetPanel(session, "navPanel", selected = "details")
  }
Run Code Online (Sandbox Code Playgroud)

然而,当我再尝试从切换detailsoverview标签,我立即得到后仰的details标签。我猜想,这是因为该事件不会被清零,即d是不是null当标签被改变,因此在条件if-clause评估为TRUE

因此,如何以编程方式清除click事件?添加d <- NULL到条件的末尾似乎没有做到这一点。

Hub*_*rtL 3

我有同样的问题,我发现的解决方法是将旧状态存储在全局变量中,并且仅当该变量发生变化时才进行更新,而不是在!is.null()

selected_date <- 0 # declare outside the server function

server <- function(input, output, session) {
  observe({
    d <- event_data("plotly_click")
    new_value <- ifelse(is.null(d),"0",d$x) # 0 if no selection
    if(selected_date!=new_value) {
      selected_date <<- new_value 
      if(selected_date !=0 && input$navPanel == 'overview')
        updateDateInput(session, "date", value = lubridate::ymd(selected_date))
    }
  })
...
}
Run Code Online (Sandbox Code Playgroud)

这还允许您在取消选择元素时添加行为