runjs 更改 flexdashboard 中 observeEvent 的位置?
runjs to change location in observeEvent in flexdashboard?
我有一个 flexdashboard 并且有一个操作按钮可以执行此操作:
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success",
onClick="location.href='#section-your-results';")
然后观察者这样做:
observeEvent(input$submit,{
some calculation
})
问题是在触发observeEvent之前执行了onClick部分。所以计算不适用于我要跳转到的部分。
我想做的是:
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success")
然后让观察者执行此操作:
observeEvent(input$submit,{
some calculation
useShinyjs()
runjs("location.href='#section-your-results';")
}))
但由于某种原因 runjs
命令没有被执行(我也尝试用 alert
替换 location.href
来确认。知道哪里出了问题吗?我见过 并尝试过这种方法,但没有成功。
这是(对我而言)一个可重现的示例 - 我希望在单击提交时弹出一个警告框,但对我来说不是
---
title: "reprex shinyjs rmd"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shinyjs)
useShinyjs(rmd = TRUE)
```
Column {data-width=650}
-----------------------------------------------------------------------
### Chart A
```{r}
onclick("submit",runjs('alert("Hello! I am an alert box!!");'))
```
### Chart B
```{r}
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success")
```
所以为了让它工作,我必须做两件事:
- 将
useShinyjs()
的位置切换到非设置块。
- 将
onClick
更改为 onEvent
并观察输入被点击的事件。
我认为这是因为闪亮的输入元素禁用了按钮的默认点击事件,因此 shinyjs
正在监视从未发生过的事情。
这是有效的可重现示例。
---
title: "reprex shinyjs rmd"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shinyjs)
```
Column {data-width=650}
-----------------------------------------------------------------------
```{r}
useShinyjs(rmd = TRUE)
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success")
```
```{r}
observeEvent(input$submit, {
runjs('alert("Hello! I am an alert box!!");')
})
```
我有一个 flexdashboard 并且有一个操作按钮可以执行此操作:
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success",
onClick="location.href='#section-your-results';")
然后观察者这样做:
observeEvent(input$submit,{
some calculation
})
问题是在触发observeEvent之前执行了onClick部分。所以计算不适用于我要跳转到的部分。
我想做的是:
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success")
然后让观察者执行此操作:
observeEvent(input$submit,{
some calculation
useShinyjs()
runjs("location.href='#section-your-results';")
}))
但由于某种原因 runjs
命令没有被执行(我也尝试用 alert
替换 location.href
来确认。知道哪里出了问题吗?我见过
这是(对我而言)一个可重现的示例 - 我希望在单击提交时弹出一个警告框,但对我来说不是
---
title: "reprex shinyjs rmd"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shinyjs)
useShinyjs(rmd = TRUE)
```
Column {data-width=650}
-----------------------------------------------------------------------
### Chart A
```{r}
onclick("submit",runjs('alert("Hello! I am an alert box!!");'))
```
### Chart B
```{r}
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success")
```
所以为了让它工作,我必须做两件事:
- 将
useShinyjs()
的位置切换到非设置块。 - 将
onClick
更改为onEvent
并观察输入被点击的事件。
我认为这是因为闪亮的输入元素禁用了按钮的默认点击事件,因此 shinyjs
正在监视从未发生过的事情。
这是有效的可重现示例。
---
title: "reprex shinyjs rmd"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(shinyjs)
```
Column {data-width=650}
-----------------------------------------------------------------------
```{r}
useShinyjs(rmd = TRUE)
actionButton(inputId="submit",
label = "Submit answers",
class="btn btn-success")
```
```{r}
observeEvent(input$submit, {
runjs('alert("Hello! I am an alert box!!");')
})
```