我的闪亮应用程序面临挑战我设计了一个有两个标签的UI,每个标签都有自己的重置按钮。我们的想法是使用一个Shiny模块来处理这些按钮的服务器逻辑。但是,我遇到了一个问题,单击重置按钮不会触发任何响应。
下面是我的代码的简化片段:
library(shiny)
# UI for Reset Button
reinitButtonUI <- function(id) {
ns <- NS(id)
actionButton(ns("ReinitData"), "Reset", class = "btn-lg btn-secondary")
}
# Server logic for Reset Button
reinitButtonServer <- function(input, output, session, mode_transport) {
ns <- session$ns
observeEvent(input[[ns("ReinitData")]], {
print(paste("Reset button clicked for transport mode:", mode_transport))
reinit_data(mode_transport)
})
}
reinit_data <- function(mode_transport) {
print(paste("Function reinitialiser_donnees called for transport mode:", mode_transport))
}
# Main UI
ui <- fluidPage(
tabsetPanel(
tabPanel("Land",
reinitButtonUI("landModule")
),
tabPanel("Helicopter",
reinitButtonUI("helicopterModule")
)
)
)
# Main Server
server <- function(input, output, session) {
callModule(reinitButtonServer, "landModule", mode_transport = "land")
callModule(reinitButtonServer, "helicopterModule", mode_transport = "helicopter")
print("Server function loaded.")
}
# Run the App
shinyApp(ui, server)
我已经包含了一些print语句来跟踪流,但是在单击reset按钮时,没有任何东西被打印到控制台,这表明observeEvent没有被触发。
我相信我的模块逻辑应该允许标签之间的差异,并有相应的复位按钮作出相应的React。然而,它并没有像预期的那样工作。
任何关于可能出现问题的见解,或关于如何在单击重置按钮时触发触发事件的建议,将不胜感激!
提前感谢您的帮助。
1条答案
按热度按时间bd1hkmkf1#
当访问模块的输入值时,你不需要使用
ns
-如果你将input[[ns("ReinitData")]]
改为input$ReinitData
,你会发现它像你期望的那样工作。