在最近更新之后,使用shinyjs重置event_data似乎不再起作用

时间:2019-06-26 13:23:01

标签: r shiny plotly shinyjs

我正在为大型笨重的闪亮仪表板维护代码,并且我注意到单击事件功能不再重设。

将其简化为一个最小的工作示例,并与https://stackoverflow.com/a/44543204/11703379https://community.plot.ly/t/reseting-click-events/2718的解决方案进行比较之后,我得出结论,plotlyshinyjs个库,将禁用此功能。 通过在绘图处停止执行,我看到绘图对象确实正确地带有source属性。

library(plotly)
library(shiny)
library(shinyjs)

ui <- fluidPage(
    useShinyjs(),

    plotlyOutput("plot"),

    extendShinyjs(text = "shinyjs.resetClick = function() { Shiny.onInputChange('.clientValue-plotly_click-plot', 'null'); }"),
    actionButton("reset", "Reset click"),

    verbatimTextOutput("click")
)

server <- function(input, output, session) {
    observeEvent(input$reset, js$resetClick())

    output$click <- renderPrint(event_data("plotly_click", source = "plot"  ))

    output$plot <- renderPlotly(
        plot_ly(mtcars, x = ~mpg, y = ~wt,
                  type="scatter",
                  mode="markers",
                  source = "plot") %>%
            event_register("plotly_click")
    )

    output$click <- renderPrint({
        d <- event_data(source = "plot","plotly_click")
        if (is.null(d)) "No click" else d
    })
}

shinyApp(ui, server)

任何人都可以确认吗? 我正在使用plotly 4.9.0版, 和shinyjs 1.0版。

1 个答案:

答案 0 :(得分:1)

似乎不再需要 .clientValue-plotly可能有变化,但是我不确定。

.clientValue-plotly_click-plot更改为plotly_click-plot,它应该可以工作。

输出:

Output