Приложение ниже содержит модуль, который визуализирует вертикальную панель вкладок в пользовательском интерфейсе. Я вызываю этот модуль дважды в приложении.
Первый экземпляр модуля отображается правильно:
Однако второй экземпляр - нет (содержимое вкладок больше не отображается):
Если вы посмотрите инспектора, вы увидите, что для первого экземпляра зависимости HTML добавляются к tabset:
Однако эти зависимости отсутствуют для второго экземпляра:
Я предполагаю, что это связано с использованием singleton()
в исходном коде для verticalTabsetPanel
? Я не знаю, как обойти это. Я попытался добавить зависимости в папку \www
в каталоге моего приложения, а затем вручную добавить их в заголовок моего приложения, но, похоже, это тоже не сработало, поэтому я не смог бы понять, почему это будет с благодарностью.
Вот код:
library(shiny)
library(shinyWidgets)
library(shinydashboard)
modui <- function(id) {
ns <- NS(id)
tagList(
verticalTabsetPanel(
id = ns('tabs'),
verticalTabPanel(ns('item1'), ns('item1 content')),
verticalTabPanel(ns('item2'), ns('item2 content'))
)
)
}
modserver = function(input, output, session) {
}
# HEADER ------------------------------------------------------------------
header <- dashboardHeader()
# SIDEBAR -----------------------------------------------------------------
sidebar <- dashboardSidebar(
sidebarMenu(
menuItem("Tab 1", tabName = 'tab_1'),
menuItem("Tab 2", tabName = 'tab_2'))
)
# BODY --------------------------------------------------------------------
body <- dashboardBody(
tags$head(
tags$link(rel = "stylesheet", type = "text/css", href = "vertical-tab-panel.css"),
tags$script(src='vertical-tab-panel.js'),
tags$script(src='vertical-tab-panel-bindings.js')
),
tabItems(
tabItem(tabName = 'tab_1', modui('t1')),
tabItem(tabName = 'tab_2', modui('t2')) )
)
# UI ----------------------------------------------------------------------
ui = dashboardPage(header, sidebar, body)
shinyApp(
ui = ui,
server = function(input, output, session) {
callModule(modserver, 't1')
callModule(modserver, 't2')
}
)