visnetwork 节点标题中的闪亮操作按钮
Shiny actionbutton within visnetwork node title
我正在尝试在 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)
只需向按钮添加一个 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
事件绑定到操作按钮以外的其他对象。 (也只是到圆圈而不是使用弹出窗口)。
我正在尝试在 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)
只需向按钮添加一个 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
事件绑定到操作按钮以外的其他对象。 (也只是到圆圈而不是使用弹出窗口)。