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

R shinyjs禁用从另一个模块获取输入的模块中不工作的函数,r,shiny,shinyjs,shinymodules,R,Shiny,Shinyjs,Shinymodules,下面的代码是我在一个更大的应用程序中构建的最小示例,我不明白为什么output\u module.R中的textInput没有被禁用。如果有人能帮忙,我将不胜感激 app.R library(shiny) library(shinyjs) # Define UI ui <- fluidPage( useShinyjs(), # Application title titlePanel("Demo"), # Sidebar

下面的代码是我在一个更大的应用程序中构建的最小示例,我不明白为什么
output\u 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)
#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)
  
}
#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"))
      
    })
  }
#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.
      
    })
  }
库(闪亮)
图书馆(shinyjs)
#定义用户界面

ui这是由于@Limey解决的。以下是已编辑模块的正确代码

输出\u模块.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)
#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)
  
}
#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"))
      
    })
  }
#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.
      
    })
  }
#定义用户界面

输出模块无法复制。我在输入中输入“M”,在输出中显示“M”。这不是预期的行为吗?问题是输出不应该是可编辑的,但它是可编辑的。这应该由禁用功能来处理,我不知道为什么它不工作。我没有注意。道歉。似乎
shinyjs::disable
尊重模块名称空间。因此,
disable(id=“output”)
为您提供了所需的功能。我会做出和你一样的假设。这很有效,非常感谢你@Limey!