【发布时间】:2022-01-23 20:05:12
【问题描述】:
我有下面的shiny 应用程序,我在其中使用 js 技术来捕获应用程序中的点击,而无需使用闪亮的输入元素。它很好用,但不适用于节点,因为我希望能够捕获节点并获取节点 ID。
逻辑如下:单击"Click me" 文本或节点,然后在Rstudio 控制台中输入input$js.node_clicked。结果应该是“one_1”,我可以接受 ase "one" 对应于节点和单击序列上的“_1”。但是当我单击节点时,我只得到“_1”而不是节点 ID“one_1”。逻辑来自here。
library(shiny)
library(shinyWidgets)
library(DiagrammeR)
library(magrittr)
js <- '
$(document).on("click", ".node", function(e) {
if(typeof BUTTON_CLICK_COUNT == "undefined") {
BUTTON_CLICK_COUNT = 1;
} else {
BUTTON_CLICK_COUNT ++;
}
Shiny.onInputChange("js.node_clicked",
e.target.id + "_" + BUTTON_CLICK_COUNT);
});
'
ui <- fluidPage(
tags$script(HTML(js))
,
div(id="one","click me",class="node")
,
uiOutput("main")
)
server <- function(input, output) {
output$main <- renderUI({
tagList(
div(
grVizOutput("grr", width = "100%", height = "90vh")
))
})
output$grr <- renderGrViz(grViz( "digraph test{
A[tooltip='A word'];
B[tooltip='Another word'];
A -> B;}" )
)
observeEvent(input$js.node_clicked , {
browser()
}) #
}
shinyApp(ui, server)
【问题讨论】:
-
什么叫“节点”?文档的孩子?
-
啊我没看到,你定义了一个类
node。
标签: javascript r shiny nodes