而不是一个observeEvent
你可以把actionButton
本身在一个tags$a
并链接到#section-mytab
。请注意,您必须添加section-
使用时在选项卡名称之前runtime: shiny
.
这可以解决您的问题还是您需要它来使用observeEvent
?
---
title: "Tabset Column"
output: flexdashboard::flex_dashboard
runtime: shiny
---
Column
-------------------------------------
### Chart 1
```{r, echo = FALSE}
tags$a(href = "#section-mytab",
shiny::actionButton("btn1", "go to mytab")
)
```
Column {.tabset}
-------------------------------------
### Chart 2
```{r}
```
### Chart 3 {#mytab}
```{r}
```
如果需要,上面的逻辑可以与observeEvent
使用 {shinyjs} 和不可见的actionButton
。技巧就在这里,我们仍然使用actionButton
触发选项卡。但实际按钮并未显示display: none
(重要的是,该按钮未设置为hidden
,因为这会阻止它被点击)。然后我们创建另一个actionButton
这是由观察到的observeEvent
。这可以触发其他计算等,最后click
on the actionButton
这没有显示。如果您有更多页面并且想要从第 1 页跳转到第 2 页上的选项卡 3,那么我们需要两个click
s:一个更改页面,一个激活选项卡。但我们都可以在里面触发这个observeEvent
。它很老套,看起来不像好的代码,但从好的方面来说,即使没有自定义的 JavaScript 函数,它也能工作。
---
title: "Tabset Column"
output:
flexdashboard::flex_dashboard
runtime: shiny
---
```{r global, echo = FALSE}
library(shiny)
library(shinyjs)
useShinyjs(rmd = TRUE)
```
Column
-------------------------------------
### Chart 1
```{r, echo = FALSE}
observeEvent(input$btn1, {
# do some calculations here
click("btn2")})
shiny::actionButton("btn1", "do something")
tags$a(href = "#section-mytab",
# set this button to `display: none;` but *not* to `hidden`
shiny::actionButton("btn2", "go to mytab", style = "display: none")
)
```
Column {.tabset}
-------------------------------------
### Chart 2
```{r}
```
### Chart 3 {#mytab}
```{r}
```