【问题标题】:Shiny actionbutton within visnetwork node titlevisnetwork 节点标题中的闪亮动作按钮
【发布时间】:2019-09-02 04:50:48
【问题描述】:

我正在尝试在 visNetwork 节点中嵌入一个操作按钮,以便可以通过单击工具提示中的按钮来启动操作。

我可以让按钮出现在节点标签中,但单击它时不会触发任何事件。我哪里错了?

小例子:

library(shiny)  
library(visNetwork)

ui <- fluidPage(
    visNetworkOutput("net")
)

server <- function(input, output) {

    ## minimal nodes and edges example
    nodes <- data.frame(id = 1, title = HTML("<button id='test' type='button' class='btn btn-default action-button'>test</button>"))
    edges <- data.frame(from = c(1,1))

    ## render the single-node network
    output$net = renderVisNetwork(visNetwork(nodes, edges))

    ## detect when the actionbutton is clicked
    observeEvent(input$test, {
        print("clicked")
    })
}


shinyApp(ui,server)

【问题讨论】:

  • 赏金有什么遗漏吗?
  • 抱歉,我正在度假 - 您的答案是自动选择的。感谢您的帮助!

标签: javascript r shiny visnetwork


【解决方案1】:

只需将onclick 事件添加到按钮即可。您可以在那里触发 JavaScript 并根据需要使用Shiny.oninputchange() 创建input$test。由于input$test 仅在您发送的值发生更改时才会触发,因此您应该Math.random() 生成(变化的)随机值。

可重现的例子:

 library(shiny)  
 library(visNetwork)

 ui <- fluidPage(
     visNetworkOutput("net")
 )

 server <- function(input, output) {

  ## minimal nodes and edges example
  nodes <- data.frame(id = 1, title = HTML("<button id='test' type='button'
     class='btn btn-default action-button' onclick ='Shiny.onInputChange(\"test\", 
     Math.random());'>test</button>"))
  edges <- data.frame(from = c(1,1))

  ## render the single-node network
  output$net = renderVisNetwork(visNetwork(nodes, edges))

  ## detect when the actionbutton is clicked
  observeEvent(input$test, {
      print("clicked")
  })
}

 shinyApp(ui,server)

注意:

我不确定您的总体目标是什么,并且此注释可能是不必要的,但只是一个指针,您还可以将 onclick 事件绑定到操作按钮以外的其他对象。 (也只是到圆圈而不是使用弹出窗口)。

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2019-04-19
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多