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!