如何使用bslib::accordion_panel_update()动态更新折叠面板标题
解决bslib折叠面板标题动态更新问题
你的问题出在**accordion_panel的参数匹配**上:bslib::accordion_panel_update()的target参数对应的是折叠面板的value属性,而非你设置的id属性。
修正后的完整代码如下:
ui <- bslib::page_sidebar( sidebar=bslib::sidebar( open="always", position="right", shiny::selectInput( inputId="acc_title", label="Accordion Panel's title", choices=c("Title 1", "Title 2"), selected="Title 1", multiple=FALSE ) ), bslib::card( "Some content", bslib::card_footer( bslib::accordion( id="acc", open=FALSE, multiple=FALSE, bslib::accordion_panel( value="acc_panel", # 这里把id换成value "Title 1", "Accordion's content." ) ) ) ) ) server = function(input, output, session) { shiny::observeEvent(input$acc_title, { bslib::accordion_panel_update( id="acc", target="acc_panel", title = input$acc_title ) }) } shiny::runApp(shinyApp(ui, server))
关键说明:
accordion_panel的value参数是用来标识面板的唯一标识符,供accordion_panel_update定位目标面板;而id参数是给HTML元素设置的DOM ID,和update函数的定位无关。- 如果需要同时保留DOM元素的ID,可以同时设置
id和value参数,比如:accordion_panel(id="panel_dom_id", value="acc_panel", ...),不影响update功能。
内容的提问来源于stack exchange,提问作者Karsten W.
相关产品推荐
相关产品推荐

