我有一个闪亮的仪表板应用程序,带有3个标签和一个通知菜单。我正在尝试跟踪仪表板上的用户活动,并希望在仪表板上记录每次点击。
tabset面板的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”)
感谢任何帮助。
答案 0 :(得分:1)
我只是快速浏览了你的代码,我可以看到两个错误。 onclick
的第一个参数是元素的ID。在您的情况下,您需要实际标签按钮的ID,但不幸的是标签工作方式有闪亮,“Tab1”实际上是标签面板容器的ID,但它不是标签按钮本身的ID。看看闪亮的应用程序的HTML,你会看到。标签有点奇怪和烦人,很难处理闪亮的标签按钮本身。
其次,onclick
的第二个参数是表达式,但您尝试运行两个表达式print("Tab1 clicked")
和tab1_clicled="YES"
。你需要将它们包装在{}
中,以便它被认为是一个表达式,如下所示:
onclick(id, {print("Tab1 clicked"); tab1_clicled="YES"}
但遗憾的是,获取标签按钮的ID非常困难,所以我认为onclick
不会对此有用