问题描述
我正在尝试模块化复杂的闪亮应用程序,并且试图建立一个 navbar ,在每个 navbar 组件中都具有标签。最重要的是,我希望每个 navbar 组件都由一个模块( Dash_UI 和 Dash_Server )运行。
目标是能够隐藏“ sub” TabPanels 中的一个。当我在 Dash_UI 中创建这些 TabPanels 时,我在想可以使用 Dash_Server 中的ID而不引用* Dash_UI 名称空间。但这在某种程度上是行不通的。现在,我将Dash Module的会话分配给了hide函数,但是即使如此,它似乎也无法流行。
有人可以在这里帮助吗?
library(shiny)
library(shinyjs)
Dash_UI <- function(id,subtitle1,subtitle2){
ns <- NS(id)
tabsetPanel(
id = ns("Dash_tabs"),tabPanel(
title = tags$b(subtitle1),value = ns("Dash_tab1"),'Bla1'
),# Tab for Risk Factors
tabPanel(
title = tags$b(subtitle2),value = ns("Dash_tab2"),'Bla2'
)
)
}
Dash_Server <- function(id,button){
moduleServer(id,function(input,output,session){
# Observe the button.
observeEvent(button(),{
# Hide Second Tab
hideTab(inputId = 'Dash_tabs',target = 'Dash_tab2',session = session)
})
})
}
ui <- fluidPage(
useShinyjs(),# Top Navigation Bar
navbarPage(
title = 'Title',id = "navbar",header = fluidRow(
div(
column(width = 3,actionBttn(inputId = 'button1',label = 'Hide SubTitle12 in MainTab1')),column(width = 3,actionBttn(inputId = 'button2',label = 'Hide SubTitle22 in MainTab2'))
)
),tabPanel(
title = 'MainTab1',value = "main1",Dash_UI(id = 'main1_dash',subtitle1 = 'SubTitle11',subtitle2 = 'SubTitle12')
),tabPanel(
title = 'MainTab2',value = "main2",Dash_UI(id = 'main2_dash',subtitle1 = 'SubTitle21',subtitle2 = 'SubTitle22')
)
)
)
server <- function(input,session) {
Dash_Server('main1_dash',button = reactive({input$button1}))
Dash_Server('main2_dash',button = reactive({input$button2}))
}
shinyApp(ui,server)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)