[英]Shiny ModalDialog with InsertUI
我有一个 shiny 应用程序,它有一个按钮,它调用一个模式对话框,应该在其中插入一个 UI。 我使用insertUI
是因为我想动态添加 UI 元素。 问题是,每当我按下操作按钮时,应用程序就会崩溃并显示以下错误消息:
Warning: Error in as.character: cannot coerce type 'closure' to vector of type 'character'
[No stack trace available]
如果我在insertUI()
中设置immediate = T
则没有错误,但也没有插入 UI。 有人可以解释这里发生了什么吗? 这是一个代表。
library(shiny)
ui <- fluidPage(
actionButton("add", "addConstraints")
)
server <- function(input, output, session) {
observeEvent(input$add, {
showModal(modalDialog(
selectizeInput(session$ns("constraintType"), label = "Select constraint type", choices = c("Comparison", "Numeric", "Interval")),
tags$div(id = session$ns("constraintPlaceholder")),
insertUI(
selector = paste0("#", session$ns("constraintPlaceholder")),
where = "afterEnd",
ui = HTML("test")
),
title = "Set Constraints",
footer = tagList(
modalButton("Cancel"),
actionButton(session$ns("confirmConstraint"), "Add")
)
))
})
}
shinyApp(ui, server)
insertUI
需要在modalDialog
之外调用。 modalDialog
里面是UI组件,应该是shinyTags,也就是HTML个元素。 insertUI
是服务器调用,不能加入modalDialog
library(shiny)
ui <- fluidPage(
actionButton("add", "addConstraints")
)
server <- function(input, output, session) {
observeEvent(input$add, {
showModal(modalDialog(
selectizeInput(session$ns("constraintType"), label = "Select constraint type", choices = c("Comparison", "Numeric", "Interval")),
tags$div(id = session$ns("constraintPlaceholder")),
title = "Set Constraints",
footer = tagList(
modalButton("Cancel"),
actionButton(session$ns("confirmConstraint"), "Add")
)
))
insertUI(
selector = paste0("#", session$ns("constraintPlaceholder")),
where = "afterEnd",
ui = HTML("test")
)
})
}
shinyApp(ui, server)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.