【发布时间】:2021-07-25 02:17:57
【问题描述】:
我正在尝试使用 shinydashboardplus 包中的 boxDropdownItem 创建一个页面以动态包含和排除框,但是应用程序崩溃了,有人可以帮帮我吗?
*也欢迎使用 javascript 的解决方案 :)
这是我的代码:
shinyApp(
ui = dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
uiOutput("boxes")
)
),
server = function(input, output) {
rvs = reactiveValues(boxDropdownItem = list(), observers = list())
output$boxes <- renderUI({
for(i in 1:5) {
rvs$boxDropdownItem[[i]] =
column(width = 12,
box( id = paste("box",i),
title = paste("box",i),
width = 4,
status = NULL,
dropdownMenu = boxDropdown(
icon = icon("ellipsis-v"),
boxDropdownItem(id = paste0("del",i), "Delete")
)
)
)
}
rvs$observers = lapply(1:(length(rvs$boxDropdownItem)),function(i) {
observeEvent(input[[paste0("del",i)]],{
rvs$observers <- rvs$observers[-i]
rvs$boxDropdownItem <- rvs$boxDropdownItem[-i]
})
})
do.call(fluidRow, rvs$boxDropdownItem)
})
}
)
【问题讨论】:
-
如果您希望用户能够删除这些框,您可以在
box调用中的for语句中添加参数closable = T。它将在角落添加一个X以关闭框。 -
Kat,感谢您的快速互动。但在这种情况下,我确实需要使用 boxDropdownItem 组件而不是框的 x 组件。当用户单击删除选项(“删除”)时,我必须动态删除该框。
标签: r dynamic shiny dropdown shinydashboardplus