我想在单击操作按钮并且输入不为空时隐藏操作按钮。
类似问题已被问过here https://stackoverflow.com/questions/75749132/shiny-how-to-hide-action-button-once-it-is-clicked-and-the-input-is-not-empty,并且提供的解决方案效果很好。
但是,我不知道如何让它在闪亮的模块中工作。
这是我的示例代码:
# module UI
choice_ui <- function(id) {
ns <- NS(id)
tagList(
textInput(inputId = ns("myInput"), label = "write something"),
actionButton(inputId = ns("click"), label = "click me"),
verbatimTextOutput(outputId = ns("text"))
)
}
# module server
choice_server <- function(id) {
moduleServer(id, function(input, output, session){
observeEvent(input$click, {
x <- input$myInput
output$text <- renderPrint({x})
req(x)
removeUI(selector = paste0("#click", id), session = session)
})
})
}
# Application
library(shiny)
app_ui <- function() {
fluidPage(
choice_ui("choice_ui_1")
)
}
app_server <- function(input, output, session) {
choice_server("choice_ui_1")
}
shinyApp(app_ui, app_server)
在模块服务器上,获取会话命名空间:
ns <- session$ns
使用它在removeUI()
如下:
removeUI(selector = paste0("#", ns("click")), session = session)
这是一个完整的表示:
# module UI
choice_ui <- function(id) {
ns <- NS(id)
tagList(
textInput(inputId = ns("myInput"), label = "write something"),
actionButton(inputId = ns("click"), label = "click me"),
verbatimTextOutput(outputId = ns("text"))
)
}
# module server
choice_server <- function(id) {
moduleServer(id, function(input, output, session) {
ns <- session$ns
observeEvent(input$click, {
x <- input$myInput
output$text <- renderPrint({
x
})
req(x)
removeUI(selector = paste0("#", ns("click")), session = session)
})
})
}
# Application
library(shiny)
app_ui <- function() {
fluidPage(
choice_ui("choice_ui_1")
)
}
app_server <- function(input, output, session) {
choice_server("choice_ui_1")
}
shinyApp(app_ui, app_server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)