首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开多个边栏项会导致renderUI / uiOutput (?)

打开多个边栏项会导致renderUI / uiOutput (?)
EN

Stack Overflow用户
提问于 2021-04-03 13:13:39
回答 1查看 73关注 0票数 1

下面的代码用TabItems创建一个边栏;这些边栏同样包含子选项卡,当单击时,这些子选项卡最终将在mainBody中解决一些输出。

我的问题是,当TAB3打开时,我单击打开TAB1 (或TAB2)而不关闭TAB3,那么TAB3就不会再加载了(不过,就像subItem图标>>所看到的,它确实是打开的)。

我使用renderUI和uiOutput来完成这个任务,我使用"do.call“来设置子菜单.

我已经试过把menuItem改成menuSubItem等等.这似乎不起作用。这是“正常行为”还是我遗漏了什么(?)

在打开另一个标签之前,你总是必须关闭一个选项卡吗?

当然,任何帮助都是非常感谢的!

谢谢,gregor

代码语言:javascript
复制
library(shiny)
library(shinydashboard)
## set up a main body... no content needed
body <- dashboardBody( title="Title" )
## set up a sidebar with TABS containing subTABS
## the subTABS are adressed via an uiOutput() 
sidebar <- dashboardSidebar (
  ##
  sidebarMenu(
    menuItem("TAB1",menuSubItem(uiOutput("Sidebar_sub1")) ),
    menuItem("TAB2",menuSubItem(uiOutput("Sidebar_sub2"))  ),
    menuItem("TAB3",menuSubItem(uiOutput("Sidebar_sub3"))  ) )
) 
##
server <- function(input, output) {
  ## starting parameters
  nsubtabs    <- 9
  tabnames <- paste0("subtab",1:nsubtabs)
  ## set up a list for all subtabs
  Menus_sub <- vector("list", nsubtabs)
  for(i in 1:nsubtabs) {
    Menus_sub[[i]] <- menuSubItem(tabnames[i], tabName = tabnames[i]) }
  ## use renderUI to create sidebar-output
  output$Sidebar_sub1 <- renderUI({  
    do.call(function(...) sidebarMenu(id = "sidebarMenu_sub1", ...), Menus_sub[1:3])
  })
  ##
  output$Sidebar_sub2 <- renderUI({  
    do.call(function(...) sidebarMenu(id = "sidebarMenu_sub2", ...), Menus_sub[4:6])
  })
  ##
  output$Sidebar_sub3 <- renderUI({  
    do.call(function(...) sidebarMenu(id = "sidebarMenu_sub3", ...), Menus_sub[7:9])
  })
  ##
}
##
ui <- dashboardPage(dashboardHeader(title = "Title2"), sidebar,body)
##
shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

发布于 2021-04-08 22:04:10

我找到了一个解决方案:将sidebarMenu()中的sidebarMenu()替换为dropdownMenuOutput(),如:

代码语言:javascript
复制
sidebar <- dashboardSidebar (
  ##
  sidebarMenu(
    menuItem("TAB1",menuSubItem(dropdownMenuOutput("Sidebar_sub1")) ),
    menuItem("TAB2",menuSubItem(dropdownMenuOutput("Sidebar_sub2"))  ),
    menuItem("TAB3",menuSubItem(dropdownMenuOutput("Sidebar_sub3"))  ) )
) 

似乎在更改之后,动态创建的菜单适合下拉菜单,安装到单独的menuItems中。一切都好了!

谢谢,gregor

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66931555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档