闪亮:有没有办法通过在 tabsPanel() 之间切换来触发 observeEvent()
Shiny: Is there a way to trigger an observeEvent() by switching between tabsPanel()'s
我正在开发一个闪亮的应用程序,我想知道它是否可能,或者是否有其他人能够通过在 tabPanel()
.[=17= 之间切换来触发 observeEvent()
]
由于@SriPaladugu code 和@DeanAttali shinyjs 包,我在执行某些操作后启用和禁用 tabPanel()
有过经验,但我不知道这两个 methods/package 在回答我自己的问题时。
我需要触发 observeEvent()
以执行 removeNotification()
并在选项卡之间切换时删除任何警告 windows。
我想象中这样做的方式是这样的:
observeEvent(input$tabSwitch, {
removeNotification(previous.warning.message)
})
但是,没有办法使切换选项卡成为 eventExpr,从而使上面的代码可执行
如果有人做过或知道如何做,我将不胜感激。
如评论中所述,您必须向 tabsetPanel
提供 id
。
这是一个工作示例:
library(shiny)
ui <- fluidPage(
mainPanel(
tabsetPanel(id = "tabSwitch",
tabPanel("Tab 1", br(), "Tab 1 content"),
tabPanel("Tab 2", br(), "Tab 2 content"),
tabPanel("Tab 3", br(), "Tab 3 content")
), br(),
actionButton("warningBtn", "Generate Warning")
)
)
server <- function(input, output, session) {
observeEvent(input$warningBtn, {
showNotification(ui = paste(Sys.time(), " - Warning!"), duration = NULL, closeButton = FALSE, id = "previousWarningMessage", type = "warning")
})
observeEvent(input$tabSwitch, {
print(paste("You clicked tab:", input$tabSwitch))
removeNotification("previousWarningMessage")
})
}
shinyApp(ui, server)
我正在开发一个闪亮的应用程序,我想知道它是否可能,或者是否有其他人能够通过在 tabPanel()
.[=17= 之间切换来触发 observeEvent()
]
由于@SriPaladugu code 和@DeanAttali shinyjs 包,我在执行某些操作后启用和禁用 tabPanel()
有过经验,但我不知道这两个 methods/package 在回答我自己的问题时。
我需要触发 observeEvent()
以执行 removeNotification()
并在选项卡之间切换时删除任何警告 windows。
我想象中这样做的方式是这样的:
observeEvent(input$tabSwitch, {
removeNotification(previous.warning.message)
})
但是,没有办法使切换选项卡成为 eventExpr,从而使上面的代码可执行
如果有人做过或知道如何做,我将不胜感激。
如评论中所述,您必须向 tabsetPanel
提供 id
。
这是一个工作示例:
library(shiny)
ui <- fluidPage(
mainPanel(
tabsetPanel(id = "tabSwitch",
tabPanel("Tab 1", br(), "Tab 1 content"),
tabPanel("Tab 2", br(), "Tab 2 content"),
tabPanel("Tab 3", br(), "Tab 3 content")
), br(),
actionButton("warningBtn", "Generate Warning")
)
)
server <- function(input, output, session) {
observeEvent(input$warningBtn, {
showNotification(ui = paste(Sys.time(), " - Warning!"), duration = NULL, closeButton = FALSE, id = "previousWarningMessage", type = "warning")
})
observeEvent(input$tabSwitch, {
print(paste("You clicked tab:", input$tabSwitch))
removeNotification("previousWarningMessage")
})
}
shinyApp(ui, server)