R shinyjs禁用在从另一个模块获取输入的模块中不工作的函数



下面的代码是我在一个更大的应用程序中构建内容的一个最小示例,我不明白为什么output_module.R中的textInput没有被禁用。如果有人能帮忙,我将不胜感激!

app.R

library(shiny)
library(shinyjs)
# Define UI
ui <- fluidPage(

useShinyjs(),
# Application title
titlePanel("Demo"),
# Sidebar 
sidebarLayout(
sidebarPanel(
input_module_ui("input")
),
mainPanel(
output_module_ui("output")
)
)
)
# Define server logic 
server <- function(input, output, session) {

callModule(input_module_server, "input")
res <- callModule(input_module_server, "input")

callModule(output_module_server, "output", res)

}
# Run the application 
shinyApp(ui = ui, server = server)

输入模块.R

#Define ui
input_module_ui <- function(id) {
ns <- NS(id)

tagList(
textInput(
inputId = ns("input"),
label = "Input:",
value = "A"
)
)
}
#Define server logic 
input_module_server <- function(input, output, session) {

#List of things to return for use in other modules
return(input)

}

输出模块.R

#Define ui
output_module_ui <- function(id){
ns <- NS(id)
tagList(
textInput(inputId = ns("output"),
label = "Output:", 
value = ""
)
)
}
#Define server logic 
output_module_server <-
function(input,
output,
session,
module_input) {
observe({

output <- module_input$input
updateTextInput(session, "output", value = output)
disable(id = session$ns("output"))

})
}

多亏了@Limey,这个问题才得以解决。这是已编辑模块的正确代码。

输出模块.R

#Define ui
output_module_ui <- function(id){
ns <- NS(id)
tagList(
textInput(inputId = ns("output"),
label = "Output:", 
value = ""
)
)
}
#Define server logic 
output_module_server <-
function(input,
output,
session,
module_input) {
observe({

output <- module_input$input
updateTextInput(session, "output", value = output)
disable(id = "output") #This line was edited to resolve the issue.

})
}

最新更新