你能使用shinyjs来隐藏/显示整个面板吗?

3

我想知道是否可以在整个shiny wellPanel上使用shinyjs的隐藏和显示功能?我想这样做是为了有条件地显示两个面板中的一个,但我发现我不能在conditionalPanel的条件中使用反应式值。

以下是我所想的示例,但我不知道如何在shinyjs函数中引用给定给well panels的id。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton("test", label = "test"),
  shinyjs::hidden(wellPanel(id = "panelA", "I AM PANEL A")),
  wellPanel(id="panelB", "I AM PANEL B")
)

sever <- function(input,output){
  observeEvent(input$test, {
    shinyjs::showElement(id= "panelA")
    shinyjs::hideElement(id= "panelB")
  })
}

shinyApp(ui=ui,server=server)

我在你的代码中唯一发现的问题是你使用了sever而不是server。 修改后,一切都按预期工作了。 - Geovany
2个回答

5
library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton("showA", label = "Show A"),
  actionButton("showB", label = "Show B"),
  shinyjs::hidden(wellPanel(id = "panelA", "I AM PANEL A")),
  wellPanel(id="panelB", "I AM PANEL B")
)

server <- function(input,output){
  observeEvent(input$showA, {
    shinyjs::showElement(id= "panelA")
    shinyjs::hideElement(id= "panelB")
  })

  observeEvent(input$showB, {
    shinyjs::showElement(id= "panelB")
    shinyjs::hideElement(id= "panelA")
  })
}

shinyApp(ui=ui,server=server)

2
作为 Geovany 的评论所说,您将 server 拼错成了 sever。此外,您可能希望使用 shinyjs 中的 toggle 函数。
library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton("test", label = "test"),
  shinyjs::hidden(wellPanel(id = "panelA", "I AM PANEL A")),
  wellPanel(id="panelB", "I AM PANEL B")
)

server <- function(input,output){
  observeEvent(input$test, {
    shinyjs::toggle(id= "panelA")
    shinyjs::toggle(id= "panelB")
  })
}

shinyApp(ui=ui,server=server)

希望这有所帮助。

谢谢,我想我只是看得太久了。如果将来有其他人感兴趣,这里有一个更完整的例子。 - Sam-U_L-L-L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接