如何在Quarto Shiny仪表盘中获取当前活跃标签页?
解决方案
Quarto Dashboard格式中的id参数无法直接生成用于获取当前活跃标签的input对象,需要通过JavaScript监听标签页切换事件,将标签信息传递给Shiny来实现需求。以下是修改后的完整代码:
--- title: "Tab-Aware Dashboard" format: dashboard: sidebar: server: shiny --- # Sidebar {.sidebar} ```{r} selectInput("name", "Choose a name", choices = c("Alice", "Bob", "Charlie"))
Main Tab {#main}
Greeting
textOutput("greeting")
Show Active Tab
textOutput("current_tab")
Second Tab {#second}
plot(cars)
#| context: server output$greeting <- renderText({ paste("Hello,", input$name, "!") }) output$current_tab <- renderText({ paste("当前标签ID:", input$active_tab_id, "\n当前标签名称:", input$active_tab_name) })
### 关键逻辑说明 1. **JavaScript监听**:利用Bootstrap标签页的`shown.bs.tab`事件(标签切换完成后触发),抓取当前激活标签的ID和显示名称,通过`Shiny.setInputValue`将数据传递给Shiny的`input`对象。 2. **初始化处理**:页面加载完成后主动获取初始激活的标签信息,避免页面刚打开时无数据的问题。 3. **Server端调用**:直接通过`input$active_tab_id`和`input$active_tab_name`获取当前标签的ID和名称,在输出中展示。 内容的提问来源于stack exchange,提问作者TarJae
相关产品推荐
相关产品推荐

