[英]Shiny - uiOutput and UI layout problems
現在,我將右側的UI封裝為變量,並且希望右側的UI根據“所選模塊”進行更改。 這是我現在正在做的事情:
ui <- navbarPage('test',
tabPanel('Analysis',
fluidRow(
ui_core,
uiOutput('ui_module')
)
)
)
output$ui_module <- renderUI({
# observeEvent(input$core_module_selection, {
current_module <- NULL
if(!is.null(input$core_module_selection) && input$core_module_selection != 'Core') {
current_module <- rval$module_ui[[match(input$core_module_selection, rval$module_names)]]
rval$ui_module <<- current_module
}
return(rval$ui_module)
})
我對ui_module
變量使用反應性值(rval),該變量包含要渲染的UI:
ui_filetrans <-
tabsetPanel(
tabPanel('File Transfer',
p("filetrans")
)
)
register_module("File Transfer", ui_filetrans)
最終應該像這樣:
ui <- navbarPage('Granatum',
tabPanel('Analysis',
fluidRow(
ui_core,
tabsetPanel(
tabPanel('File Transfer',
p("filetrans")
)
)
)
)
)
但是,相反,我得到了這個奇怪的文本(我猜這是Bootstrap類之類的東西),它應該來自標簽……而不是整個對象。
我究竟做錯了什么? 將對象分配給矢量后,對象的類型是否會更改?
事實證明,通過將Shiny UI元素傳遞給矢量,您將隱式刪除對象的某些信息。
解決方案是使用列表,並使用雙方括號為索引建立索引:
rval$module_ui <- list(ui_core)
rval$module_ui <- c(rval$module_ui, list(module))
c()
的連接函數對於列表的工作原理非常相似,但是請確保在連接之前將“原子”或原子組件轉換為列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.