首页 > 解决方案 > 动态左侧菜单向下而不是向右列出项目

问题描述

我正在尝试创建一个动态左侧菜单(标题),但这些项目是向下而不是向右列出的。我想它tagList在定义 UI 时与包装器有关。

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyWidgets)
library(stringr)


 ui = dashboardPage(
     dashboardHeader(
         leftUi =  tagList(uiOutput("filter"))
     ),
     dashboardSidebar(
         pickerInput(
                "inputParameters",
                "Parameters:",
                choices = c("a", "b", "c"),
                multiple = TRUE,
                options = list(
                    `actions-box` = TRUE,
                    size = 10,
                    `selected-text-format` = "count > 1"
                )
            )
        ),
     dashboardBody(),
     title = "DashboardPage"
)

server = function(input, output) {

    params <- reactive(input$inputParameters)
    
    output$filter = renderUI(
            lapply(seq_along(params()), function(i) {
                dropdownButton(
                    inputId = paste0("mydropdown", i),
                    label = params()[i],
                    icon = icon("sliders"),
                    status = "primary", 
                    circle = FALSE,
                    selectizeInput(
                        paste0("input", paste0(str_to_title(params()[i]))),
                        paste0(paste0(str_to_title(params()[i]), ":")),
                        choices = 1:3,
                        multiple = TRUE,
                        selected = 1:3
                    )
                )
            })
        )

}

shinyApp(ui, server)

标签: rshinyshinydashboard

解决方案


未经测试,我会尝试:

output$filter = renderUI({
        ddbuttons <- lapply(seq_along(params()), function(i) {
            dropdownButton(
                inputId = paste0("mydropdown", i),
                label = params()[i],
                icon = icon("sliders"),
                status = "primary", 
                circle = FALSE,
                selectizeInput(
                    paste0("input", paste0(str_to_title(params()[i]))),
                    paste0(paste0(str_to_title(params()[i]), ":")),
                    choices = 1:3,
                    multiple = TRUE,
                    selected = 1:3
                )
            )
        })
        do.call(splitLayout, ddbuttons)
     })

并且不要使用tagList,只是uiOutput("filter")


推荐阅读