我正在尝试构建一个大型闪亮的应用程序,由几个小应用程序制作。
这个想法是在顶部构建一个带有navbarPage(A)的应用程序,由tabPanel(s)和navbarMenu(s)构成,对于其中一些声音,可以有一个“横向菜单”(B) (侧边栏等)左侧有其他声音。
最后,对于这些语音中的每一个,都可以只使用左侧面板(C)和“左侧菜单”(B)旁边的输出菜单(D)构建一个应用程序。
在这里,我报告一个裁剪的截图,以提供一个视觉概念:
如您所见,面板C和输出菜单D位于分开的“可滚动”框架中。从“左侧面板”B中选择“1”语音时,可以看到调用shinyApp函数时出现此问题。
在这里,我报告了一个分为文件的简化代码:
##### Main app code:
MainUI <- fluidPage(
navbarPage(title = "title",
## other voices
navbarMenu("voice 5",
tabPanel("menu 1",
uiOutput("menu51")
),
tabPanel("...")
)
)
)
MainServer <- function(input, output, session) {
output$menu51 <- renderUI({
menu51UI
})
}
##### menu51 code:
menu51UI <- fluidPage(
navlistPanel(
"menu 5>1",
tabPanel("1",
shinyApp(exampleUI, exampleServer)
),
tabPanel("2"),
tabPanel("3"),
widths=c(2,10)
)
)
BedUtilitiesServer <- function(input, output, session) {
##
}
##### example app code:
exampleUI <- fluidPage(
titlePanel("Sort"),
fluidRow(
column(2,
wellPanel(
checkboxInput(inputId = 'directory_flag', label = 'Directory path?', value = FALSE),
fileInput(inputId = "infiles", label = "Choose file(s)", multiple = TRUE),
checkboxInput(inputId = 'descending_flag', label = 'Descending', value = FALSE),
checkboxInput(inputId = 'merge_flag', label = 'Merge', value = FALSE),
actionButton(inputId = "sortbed_button", label="sort file(s)", width = "100%", icon = icon(name="sort")),
tags$hr(),
tags$p("Loaded file(s):"),
verbatimTextOutput("file_loaded")
)
),
column(8,
uiOutput("data_tables")
)
)
)
exampleServer <- function(input, output, session) {
## some computation functions
}
为了避免这个问题,我决定用uiOutput(“example_ui”)替换对shinyApp(exampleUI,exampleServer)的调用。 代码就是:
##### Main app code:
MainUI <- fluidPage(
navbarPage(title = "title",
## other voices
navbarMenu("voice 5",
tabPanel("menu 1",
uiOutput("menu51")
),
tabPanel("...")
)
)
)
MainServer <- function(input, output, session) {
output$menu51 <- renderUI({
menu51UI
})
}
##### menu51 code:
menu51UI <- fluidPage(
navlistPanel(
"menu 5>1",
tabPanel("1",
########
uiOutput("example_ui")
),
tabPanel("2"),
tabPanel("3"),
widths=c(2,10)
)
)
BedUtilitiesServer <- function(input, output, session) {
output$example_ui <- renderUI({
#######
exampleUI
})
}
##### example app code:
exampleUI <- fluidPage(
titlePanel("Sort"),
fluidRow(
column(2,
wellPanel(
checkboxInput(inputId = 'directory_flag', label = 'Directory path?', value = FALSE),
fileInput(inputId = "infiles", label = "Choose file(s)", multiple = TRUE),
checkboxInput(inputId = 'descending_flag', label = 'Descending', value = FALSE),
checkboxInput(inputId = 'merge_flag', label = 'Merge', value = FALSE),
actionButton(inputId = "sortbed_button", label="sort file(s)", width = "100%", icon = icon(name="sort")),
tags$hr(),
tags$p("Loaded file(s):"),
verbatimTextOutput("file_loaded")
)
),
column(8,
uiOutput("data_tables")
)
)
)
exampleServer <- function(input, output, session) {
## some computation functions
}
它似乎有效,除了从未出现的exampleUI !!!!
怎么可能?有人可以帮助我吗?有任何想法吗?有错误吗?