【问题标题】:Control visible/invisible of the menu items of shiny dashboard using "shinyjs" package使用“shinyjs”包控制闪亮仪表板菜单项的可见/不可见
【发布时间】:2017-03-21 10:43:17
【问题描述】:

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

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

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

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

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

activate tabpanel from another tabpanel

感谢任何回复!

谢谢!

乔安娜

【问题讨论】:

  • 请提供一个可重现的最小示例。您可以使用 JavaScript 和 CSS display:none 解决此问题,而无需使用 shinyjs
  • 感谢金雄兵!我通过将 tags$div( id="haha",menuItem()) 添加到我想要控制的 menuItems 并添加 observeEvent(input$showSidebar,{shinyjs::toggle("haha")}) 来解决这个问题他们。

标签: r shiny menuitem dashboard shinyjs


【解决方案1】:

我通过为我想要隐藏/显示的项目添加 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"
  )
)) 

服务器:

observeEvent(input$showSidebar, {
shinyjs::toggle("haha")

})

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

【讨论】:

  • 感谢分享您的解决方案。如果您想解决它而不必将其包装在另一个 div 中,应该可以通过使用 selector 参数而不是 toggle() 中的 id 参数来实现,但我无法告诉您要做什么用作selector 值而没有看到具有工作代码的完全可重现的示例
  • 非常感谢@daattali!我一定会尝试更多的可能性!
  • 为了挽救那些试图让 Dean 的建议发挥作用的人:jquery 选择器在这里解释得很好:jquery selectors。任何选择器都可以通过切换中的参数来处理:selector="jquery selector"
  • 谢谢@SprengMeister,我一定会去看看的!
  • 选择器示例:shinyjs::toggle(selector = "ul li:eq(0)", anim = TRUE) 这将切换侧边栏中的第一个 menuItem。
猜你喜欢
  • 2016-02-13
  • 1970-01-01
  • 2018-09-25
  • 2019-02-23
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
相关资源
最近更新 更多