我正在构建一个R Shiny仪表板,我正在尝试实现conditionalPanels。当然,我是JavaScript的新手。关于conditionalPanels
的关于SO的帖子很多,但我见过的每个帖子在条件表达式中使用input.something
,通常是这样的:
conditionalPanel(
condition = "input.tabs == 'correlation'",
actionButton("generate_correlation", "Generate Heat Map")
)
我知道条件语句中的表达式是一个被评估为JavaScript表达式的字符串,但我想知道是否可以访问input
以外的其他变量和对象?例如,它可以评估反应函数吗?我想按下一个按钮,然后有条件地出现一个新标签。我创造了
tabPanel("Tab 1",
actionButton("dropColumnsComplete", "Next"))
然后,我在服务器端创建了一个反应式表达式来处理这个问题:
dropColumnsComplete <- reactive(input$dropColumnsComplete,{
return(TRUE)
})
单击该按钮会触发input$dropColumnsComplete
事件,该事件应调用在调用函数TRUE
时返回dropColumnsComplete()
的反应式表达式。然后,我加入
conditionalPanel(condition = "dropColumnsComplete()",
tabPanel("Tab 2")
),
我希望按下按钮会出现标签2。我知道我没有正确访问条件表达式中的dropColumnsComplete()
- 它应该是document.dropColumnsComplete()
吗? shiny.dropColumnsComplete()
?关于此问题的文档缺乏令人惊讶的缺失,因此我对如何在JavaScript中访问input$...
以外的变量感到茫然。
答案 0 :(得分:0)
没有理由将反应性写入有条件地显示/隐藏元素。请查看shinyjs
,而不是Dean Attali
使用shinyjs
:
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
actionButton("show", "Click me once to show stuff!"),
actionButton("toggle", "Click me any times to toggle stuff!"),
hidden(
div(id = "d1",
"Content hidden until button is clicked"
)
),
hidden(
div(id = "d2",
"Content toggled when button is clicked"
)
)
)
server <- function(input, output) {
observeEvent(input$show, {
show("d1")
})
observeEvent(input$toggle, {
toggle("d2")
})
}
shinyApp(ui, server)