2016-11-07 16 views
2

我可以友好地问一个关于“shinyjs”包的问题吗?使用“shinyjs”包控制可见/不可见的闪亮仪表板的菜单项

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

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

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

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

activate tabpanel from another tabpanel

我明白任何答复!

谢谢!

乔安娜

+1

请提供一个最小可重现的例子。如果不使用'shinyjs',你可以用JavaScript和CSS'display:none'来解决这个问题。 –

+0

谢谢熊冰劲!我通过向要控制的menuItems添加标签$ div(id =“haha”,menuItem())并添加了observeEvent(输入$ showSidebar,{shinyjs :: toggle(“haha”)})来控制此问题以控制他们。 – Joanna

回答

3

我通过添加标签$ DIV()的,我想隐藏/显示的项目解决了这个问题。

UI:

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(), 

菜单项(标签$ EM( “搜索数据”,风格= “FONT-SIZE:170%”),图标=图标( “条形图-O”),TABNAME = “searchdata”)))

服务器:

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

})

所以在这种方式,您可以使用输入$ showSidebar控制有形/无形Ø f菜单项。

+3

感谢您分享您的解决方案。如果你想解决这个问题,而不必将它包装在另一个div中,应该可以在'toggle()'中使用'selector'参数而不是'id'参数,但是我不能告诉你如果没有看到完全可重复的示例,可以使用“selector”值作为代码 –

+0

非常感谢@daattali!我一定会尝试更多的可能性! – Joanna

+1

为了节省那些试图让Dean的建议工作一段时间:jquery选择器在这里解释得很好:[jquery selectors](https://www.w3schools.com/jquery/jquery_ref_selectors.asp)。任何选择器都可以通过toggle中的参数寻址:'selector =“jquery selector”' – SprengMeister