如何在闪亮的应用程序中观察 JavaScript 按钮

Posted

技术标签:

【中文标题】如何在闪亮的应用程序中观察 JavaScript 按钮【英文标题】:How to Observe a JavaScript Button in a Shiny App 【发布时间】:2021-11-07 13:25:05 【问题描述】:

我正在寻求帮助,请注意何时单击带有 navbarPage 的 Shiny App 导航栏中的按钮。

我在 Shiny 导航栏中添加了一个带有一些 javascript 的按钮。我为按钮标签('id = btn_show')提供了一个 id,并引入了一个观察事件来监听'input$btn_show'。但是没有观察到按钮……请问需要什么?谢谢

library(shiny)
library(shinyjs)

ui <- navbarPage(
  title = 'Button Up',
  tabPanel('Tab 1'),
  tabPanel('Tab 1')
  , tags$script(html(
    "var header = $('.navbar> .container-fluid');
                   header.append('<div style=\"float:right; style=\"valign:middle;\"><button id = \"btn_show\">Show Controls</button></div>');
                    console.log(header)"))
  
  
)

server <- function(input, output, session) 
  
  observeEvent(input$btn_show,
    
    print('The button was observed')
    
  )
  


shinyApp(ui, server)

【问题讨论】:

【参考方案1】:

onclick 属性添加到您的按钮:

<button id=\"btn_show\" onclick=\"Shiny.setInputValue(\\\"btn_show\\\", true, priority: \\\"event\\\")\">Show Controls</button>

我不确定三个反斜杠是否有效。如果没有,定义一个函数:

function f()
  Shiny.setInputValue(\"btn_show\", true, priority: \"event\")

然后onclick = \"f()\"

编辑

像这样工作:

  tags$script(HTML(
    "var header = $('.navbar> .container-fluid');
    var f = function()Shiny.setInputValue(\"btn_show\", true, priority: \"event\");
    header.append('<div style=\"float:right; valign:middle;\"><button id=\"btn_show\" onclick=\"f()\">Show Controls</button></div>');
    console.log(header)"))

【讨论】:

谢谢快速回复;我将代码卡盘更新为以下内容,但仍然看不到观察事件打印出来。 "var header = $('.navbar> .container-fluid'); header.append('' ); console.log(header)" 非常感谢! EDIT 成功了。

以上是关于如何在闪亮的应用程序中观察 JavaScript 按钮的主要内容,如果未能解决你的问题,请参考以下文章

观察事件的闪亮范围错误

来自 selectInput 的具有多个条件的闪亮 R 观察事件

观察事件中闪亮的反应数据集

如何制作出现在其他窗口/应用程序前面的闪亮或 javascript 警报

闪亮的:如何在闪亮的应用程序中添加反应栏

观察事件中的R闪亮updateSelectInput不起作用