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

Posted

技术标签:

【中文标题】在最近的更新之后,使用 shinyjs 重置 event_data 似乎不再起作用【英文标题】:Reset event_data using shinyjs doesn't seem to work anymore, after the recent update 【发布时间】:2019-11-08 11:06:46 【问题描述】:

我正在为一个又大又笨重的闪亮仪表板维护我的代码,我注意到点击事件功能不再重置。

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

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】:

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

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

输出:

【讨论】:

以上是关于在最近的更新之后,使用 shinyjs 重置 event_data 似乎不再起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 shinyjs 和 flexdashbord 动态显示/隐藏输入

使用shinydashboard和shinyjs在tabBox中启动时隐藏tabPanel

Shiny:如何将 rhandson 表重置为默认值?

使用 ShinyJS 初始化隐藏元素

您上传的 APK 或 Android App Bundle 使用尚未有效的上传证书签名,因为它最近已重置

shinyjs 不会隐藏使用 renderUI 创建的按钮