我的期望输出看起来像这样-
library(argonDash)
library(argonR)
library(shiny)
ui <- argonDashPage(
header = argonDashHeader(
color = "header_custom",
gradient = TRUE,
top_padding = 3,
bottom_padding = 3
),
sidebar = argonDashSidebar(
id = "app_sidebar",
vertical = TRUE,
side = "left",
size = "md",
background = "sidebar_custom",
wellPanel(id = "well_panel", argonDash::argonSidebarMenu(
shiny::br(),
argonDash::argonSidebarItem(tabName = "home", "Home", icon = htmltools::tags$i(class = paste0("fa fa-home"))),
shiny::br(),
argonDash::argonSidebarItem(tabName = "study_metrics", "Study Metrics",icon = argonR::argonIcon(name = "sound-wave")),
shiny::br(),
argonDash::argonSidebarItem(tabName = "demo_app", "Demo App"),
shiny::br()
)
)
),
body = argonDashBody(
id = "app_body",
argonTabItems(
argonTabItem(tabName = "home", p("Test")),
argonTabItem(tabName = "study_metrics",
br(),textInput('id_study_metrics', 'text', placeholder = 'study_metrics')
),
argonTabItem(tabName = "demo_app",
br(),textInput('id_demo_app', 'text', placeholder = 'demo_app')
)
)
),
footer = NULL
)
server <- function(input, output, session) {
}
shinyApp(ui, server)
我想改变的是-
argonTabItem(tabName = "study_metrics",
br(),textInput('id_study_metrics', 'text', placeholder = 'study_metrics')
),
argonTabItem(tabName = "demo_app",
br(),textInput('id_demo_app', 'text', placeholder = 'demo_app')
)
我想动态生成这个选项卡项目,因为这个列表将在未来扩大。
我的尝试-
library(argonDash)
library(argonR)
library(shiny)
ui <- argonDashPage(
header = argonDashHeader(
color = "header_custom",
gradient = TRUE,
top_padding = 3,
bottom_padding = 3
),
sidebar = argonDashSidebar(
id = "app_sidebar",
vertical = TRUE,
side = "left",
size = "md",
background = "sidebar_custom",
wellPanel(id = "well_panel", argonDash::argonSidebarMenu(
shiny::br(),
argonDash::argonSidebarItem(tabName = "home", "Home", icon = htmltools::tags$i(class = paste0("fa fa-home"))),
shiny::br(),
argonDash::argonSidebarItem(tabName = "study_metrics", "Study Metrics",icon = argonR::argonIcon(name = "sound-wave")),
shiny::br(),
argonDash::argonSidebarItem(tabName = "demo_app", "Demo App"),
shiny::br()
)
)
),
body = argonDashBody(
id = "app_body",
argonTabItems(
argonTabItem(tabName = "home", p("Test")),
uiOutput("apps_ui")
)
),
footer = NULL
)
server <- function(input, output, session) {
apps_fns <- c("id_study_metrics", "id_demo_app")
prefix_removed <- sub("id_", "", apps_fns)
output$apps_ui <- renderUI({
lapply(seq_along(apps_fns), function(i) {
argonTabItem(
tabName = prefix_removed[i],
br(),
textInput(apps_fns[i], "text", placeholder = prefix_removed[i])
)
})
})
}
shinyApp(ui, server)
但这不考虑选项卡,并且所有输入都合并到同一屏幕中。
我做了很多尝试使用tagList
等,但没有一个是为我工作的方式,我希望它。很抱歉的代码很长,但我想确保我给予一个完整的可复制的代码类似于我的情况。
1条答案
按热度按时间xvw2m8pv1#
我会在你的服务器中呈现整个标签集,而不仅仅是一些标签:
界面
服务端
说明
在你最初的方法中,你有一个div来保存动态输入。对应一个页签。最后,你想要的是:
但最终你还是通过了
这在概念上是不同的(基本上你是告诉
R
把两个"tabs"
放在第二个tab
的列表中)。因此,您必须让服务器来呈现整个过程,以便更好地控制如何填充选项卡。