在主应用程序中使用renderUI或InsertUI时,输入未在闪亮的模块服务器中更新

问题描述 投票:0回答:1

我的应用程序既生成自动Ui,也可以手动添加ui。我已经在主应用程序中同时使用了renderUI和InsertUI来调用闪亮的模块。

即使模块服务器中具有renderUI函数,闪亮模块的正常使用情况也会很好地更新我的值。但是当我通过调用insertUI和renderUI函数生成闪亮的模块时,输入值(selectInput,numericInput)没有更新。我不了解其原因,任何人都可以回答我的问题。

这是我可行的代码

观察闪亮模块更新输入的问题

# Module UI

  ui_module <- function(id){
  ns <- NS(id)

  fluidRow(
         uiOutput(ns("Input_ui"))
          )
   }

# Server UI

 server_module <- function(input,output,session){
  ns <- session$ns

   output$Input_ui <- renderUI({
     list(
       tags$div(id = ns("input_div"),numericInput(ns("Input"),"Number",NA,value = 537153, step = 1)),
       tags$div(id = ns("input2_div"),numericInput(ns("Input2"),"Number2",NA,value=686575,step = 1))
     )
  })

## INPUTS are not updating ##

 observe({
      updateNumericInput(session,
                     "Input", "Number",value = 4, step = 1)
      updateNumericInput(session,
                      "Input2", "Number2",value = 8.9, step = 1)
   })
 }

 # App UI

 ui <- fluidPage(
    fluidRow(id = "Row",
      uiOutput("ui"),
      actionButton("add","ADD")
    )
  )

# Server UI

 server <- function(input,output,session){
 # Initiating counter 
   n <- 0
 # One by one adding the modules

       observeEvent(input$add,{
             n <<- n + 1
             panels <- paste0("panels_new",n)
             insertUI("#Row",
                      "beforeEnd",
                       ui_module(panels))

             callModule(server_module,panels)
         })

  # Generating a no of shiny modules based on the some table rows

   output$ui <- renderUI({
           n <- 2                                # n will be nrow in my main app.
           list <- as.list(1:n)
           lapply(list, function(i){
                panels <- paste0("panels",i)
             fluidRow(
                 ui_module(panels)
         )
       })
     })

   observe({
           n <- 2                                # n will be nrow in my main app.
           list <- as.list(1:n)
           lapply(list, function(i){
           panels <- paste0("panels",i)
           callModule(server_module,panels)
    })
  })
 }

shinyApp(ui,server)

闪亮模块的正常使用情况(更新作品)

 #Module UI

 ui_module <- function(id){
   ns <- NS(id)

   fluidRow(
          uiOutput(ns("Input_ui"))
         )
    }
#Module Server

server_module <- function(input,output,session){
 ns <- session$ns

 output$Input_ui <- renderUI({
      list(
    tags$div(id = ns("input_div"),numericInput(ns("Input"), "Number",NA,value = 537153, step = 1)),
    tags$div(id = ns("input2_div"),numericInput(ns("Input2"),"Number2",NA,value = 686575, step =1))
  )
})

 observe({
     updateNumericInput(session,
                   "Input", "Number",value = 4, step = 1)    
     updateNumericInput(session,
                   "Input2", "Number2",value = 8.9, step = 1)
     })  
}

#APP UI

ui <- fluidPage(
    fluidRow(id = "Row",
          ui_module("panels")  
     )
  )

#APP Server

server <- function(input,output,session){
    callModule(server_module,"panels")
 }
 shinyApp(ui,server) 
r shiny shinymodules
1个回答
0
投票
  • 您的模块服务器功能未返回任何内容,因此主服务器模块不知道任何更改。
  • 您无需在模块服务器功能中对输入进行命名空间。他们是已经命名空间
  • 您想什么时候更新?根本不清楚...
© www.soinside.com 2019 - 2024. All rights reserved.