使用“shinyjs”包控制闪亮仪表板菜单项的可见/不可见

Joa*_*nna 2 dashboard r menuitem shiny shinyjs

我可以问一个关于“shinyjs”包的问题吗?

我构建了一个闪亮的仪表板,我想使用“shinyjs”设置一个功能来控制菜单项的可见/不可见。

我设计的第一个菜单项/页面是为这个仪表板选择数据。在用户选择了他们想要的数据后,我不希望他们回去更改他们的选择。所以我想设计一个按钮,如果用户点击这个按钮,第一个菜单项会消失,但菜单项的其余部分会出现。

我相信这是可能的,但我认为它需要一些 Javascript 知识来编码。

这就像这个问题的答案,但我只是切换菜单项的可见/不可见。

从另一个 tabpanel 激活 tabpanel

我感谢任何答复!

谢谢!

乔安娜

Joa*_*nna 5

我通过为要隐藏/显示的项目添加 tags$div() 解决了这个问题。

用户界面:

hidden(tags$div(
  class = "header",
  id = "haha",
  menuItem(
    tags$em("DIY Pivot Table", style = "font-size:170%"),
    icon = icon("bar-chart-o"),
    tabName = "Pivot"
  ),
  br(),
  menuItem(
    tags$em("Search Data", style = "font-size:170%"),
    icon = icon("bar-chart-o"),
    tabName = "searchdata"
  )
)) 
Run Code Online (Sandbox Code Playgroud)

服务器:

observeEvent(input$showSidebar, {
shinyjs::toggle("haha")
Run Code Online (Sandbox Code Playgroud)

})

因此,通过这种方式,您可以使用 input$showSidebar 来控制菜单项的可见/不可见。

  • 感谢您分享您的解决方案。如果你想解决它而不必将它包装在另一个 div 中,应该可以通过使用 `selector` 参数代替 `toggle()` 中的 `id` 参数,但我无法告诉你在没有看到带有工作代码的完全可重现示例的情况下,将什么用作“选择器”值 (3认同)
  • 为了拯救那些试图让 Dean 的建议起作用的人:jquery 选择器在这里解释得很好:[jquery 选择器](https://www.w3schools.com/jquery/jquery_ref_selectors.asp)。任何选择器都可以通过切换中的参数寻址:`selector="jquery selector"` (2认同)