我正在构建一个闪亮的服务器模块。UI部分是bslib::card()
,如下所示:
my_mod_ui <- function(id) {
ns <- shiny::NS(id)
bslib::card(
id=id,
full_screen = TRUE,
# the following does not work properly:
bslib::card_header(paste("Selected: ", shiny::textOutput(ns("selected")))),
bslib::layout_sidebar(
sidebar = bslib::sidebar(
selectInput(ns("choice"), choices=letters(1:5))
),
"Main contents"
)
)
}
在这个最小的例子中,服务器部分只更新了selected
输出变量:
my_mod_srv <- function(id)
shiny::moduleServer(id, function(input, output, session) {
output$selected <- renderText(input$choice)
})
此代码不起作用,如以下应用程序所示:
ui <- bslib::page_navbar(
bslib::nav_panel("Test", my_mod_ui("id1"))
)
server <- function(input, output, session) {
my_mod_srv("id1")
}
shinyApp(ui, server)
问题似乎是output$selected
被呈现为HTML元素<div id="id1-selected" class="shiny-text-output"></div>
。
如何使卡片标题动态化?
(note我正在使用bslib的github版本,CRAN版本还没有card
。
1条答案
按热度按时间bq3bfh9z1#
一个选项是将
paste
部分移动到renderText
中:注意:假设
output$wz_title
就是你所说的output$selected
。