Shinyjs:闪亮仪表板中的单击选项

Shinyjs: On click option in shiny dashboard

我有一个闪亮的仪表板应用程序,其中包含 3 个选项卡和一个通知菜单。我正在尝试在仪表板上跟踪用户 activity,并希望记录他们在仪表板上的每次点击。

标签集面板server.R中的代码如下:

output$tabs1=renderUI(
    tabsetPanel(type="tab",
                tabPanel(id="OverallTab","Overall Activity"),
                tabPanel(id="Tab1","Tab 1 details"),
                tabPanel(id="Tab2","Tab 2 details"))

我的部分通知代码如下:

output$notiMenu <- renderMenu({
            all_nots <- apply(u_notd, 1, function(row) {
              notificationItem(text = row[["notification"]], icon("users"))
            })
            dropdownMenu(type = "notifications", .list = all_nots)
          })

如果用户点击以下任一选项卡或通知菜单,我将尝试使用 shinyjs 写入数据框:

  tab1_clicled=""
  tab2_clicked=""
  noti_clicked=""
  shinyjs::onclick("notiMenu",print("Notification clicked"),noti_clicked="YES")
  shinyjs::onclick("Tab1",print("Tab1 clicked"),tab1_clicled="YES")
  shinyjs::onclick("Tab2", print("Tab2 clicked"),tab2_clicled="YES")
  df=as.data.frame(tab1_clicked,tab2_clicked,noti_clicked)

我在这里遇到 2 个问题,

1) 使用 shinyjs 参考 (here),点击选项似乎不适用于选项卡面板,我看到只有在选项卡面板上使用点击选项而不是针对每个选项卡面板?

2) 我无法在 onclick 函数中修改 tab1_clicked 的值。它抛出一条错误消息:观察者中未处理的错误:未使用的参数 (tab1_clicled = "YES")

感谢任何帮助。

我刚刚快速浏览了您的代码,发现了两个错误。 onclick的第一个参数是元素的ID。在您的情况下,您需要实际选项卡按钮的 ID,但不幸的是,选项卡在 shiny 中的工作方式 "Tab1" 实际上是选项卡面板容器的 ID,但它不是选项卡按钮本身的 ID。查看闪亮应用程序的 HTML,您就会看到这一点。选项卡有点奇怪和烦人,并且很难处理闪亮的选项卡按钮本身。

其次,onclick 的第二个参数是表达式,但您试图 运行 两个表达式 print("Tab1 clicked")tab1_clicled="YES"。您需要将它们包装在 {} 中,以便将其视为一个表达式,如下所示:

onclick(id, {print("Tab1 clicked"); tab1_clicled="YES"}

但不幸的是,获取选项卡按钮的 ID 很困难,所以我认为 onclick 对此没有用处