【发布时间】:2017-08-22 04:44:04
【问题描述】:
我正在尝试根据用户希望如何提供输入来生成动态的 UI 元素。为了简单起见,我使用 Shiny Dashboard,但我遇到了 sidebarMenu 的问题。以前,当我将静态 UI 元素直接放入 sidebarMenu 时,我没有问题,但是当我尝试将动态 UI 元素放入 sidebarMenu 时,我遇到了问题。我正在使用 R 3.3.2 和 Shiny 1.0.0 以及 Dashboard 0.5.3。
我遇到的具体问题是,当程序第一次加载时,动态 UI 元素没有加载。代码中似乎没有任何卡顿,因为即使在卸载动态 UI 时,界面的所有功能都可以正常工作。我可以通过选择导航栏中的选项卡之一或将鼠标悬停在我已实现工具提示的内容上来加载动态 UI。
我无法提供确切的代码,但我重新创建了一个小得多的可重现示例,它与我的大版本存在所有相同的问题。
library("shiny")
library("shinydashboard")
header = dashboardHeader(
title = "Dynamic UI Example"
)
sidebar = dashboardSidebar(
sidebarMenu(
menuItemOutput("dynamic_sidebar")
)
)
body = dashboardBody(
tabBox(
tabPanel(
strong("One")
),
tabPanel(
strong("Two")
)
)
)
ui = dashboardPage(header, sidebar, body)
server = shinyServer(function(input,output,session){
output$dynamic_sidebar = renderMenu({
sidebarMenu(
menuItem(
"Slider or numeric problem",
radioButtons("slider_or_numeric",
label = "Slider or Numeric Input",
choices = c("Slider", "Numeric"),
selected = "Slider",
inline = TRUE
),
uiOutput("input")
)
)
})
output$input = renderUI({
if (input$slider_or_numeric == "Slider"){
sliderInput("slider",
label = "slider",
min = 0, max = 1,
value = 0
)
} else {
numericInput("numeric",
label = "numeric",
min = 0, max = 1,
value = 0
)
}
})
})
shinyApp(ui, server)
要验证问题,加载后只需打开菜单项,您将看到单选按钮,但没有其他内容。将导航栏上的选项卡从一个切换到两个,输入应该出现在菜单中(必须在菜单打开时完成)。
我真的只是抓住了稻草,我已经解决了几个小时的问题,我认为这只是与这些功能不兼容。我真的希望有人能证明我错了,并告诉我我只是做错了。我已经为我的主程序找到了替代方案,但它们的美感与我在这里尝试完成的不同。
感谢您的所有帮助!
【问题讨论】:
标签: r user-interface shiny shinydashboard