我试图将服务器功能中的InsertUI和updateSelectizeInput方法用作应用程序的一部分,主要是因为我的选择列表很大。
library(shiny)
baby_names <- babynames::babynames %>%
distinct(name) %>%
.[["name"]] %>%
sort()
ui <- fluidPage(
tags$div(id = 'placeholder')
)
server <- function(input, output, session) {
id = "babies"
insertUI(selector = '#placeholder',
ui = tags$div(list(
selectizeInput("babynames", label = "Baby Names!", multiple = TRUE, choices = NULL, width = '400px',
options = list(placeholder = 'Type a baby name.'))
),
immediate = TRUE,
id = id))
updateSelectizeInput(
session, inputId = "babynames",
choices = baby_names,
server = TRUE)
}
shinyApp(ui, server)
由于显示selectizeInput但未显示下拉选项,因此我并没有获得太多成功。我应该如何解决这个问题?谢谢!
答案 0 :(得分:0)
insertUI
的文档中对此进行了解释:
此功能允许您随时随地向应用中动态添加任意大的UI对象。 与renderUI()不同,用insertUI生成的UI不能整体上进行更新:创建后,它就一直停留在该位置。每个新的insertUI调用都会创建更多UI对象,除了已经存在的UI对象(彼此独立)。要更新用户界面的一部分(例如:输入对象),必须使用适当的渲染功能或自定义的反应功能
(我添加了粗体)
因此,您应该改用renderUI
。