首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在主应用程序中使用renderUI或InsertUI时,在闪亮模块服务器中没有更新输入

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

Stack Overflow用户
提问于 2020-05-23 19:23:26
回答 1查看 669关注 0票数 1

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

即使使用模块服务器中的renderUI功能,闪亮模块的正常用例也很好地更新了我的值。但是,当我通过调用insertUI和renderUI函数生成闪亮模块时,输入值(selectInput、numericInput)没有更新。我不明白原因,有人能回答我的问题吗?

这是我的代码

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

代码语言:javascript
复制
# 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)

闪亮模块的正常用例(更新工程)

代码语言:javascript
复制
 #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) 
EN

回答 1

Stack Overflow用户

发布于 2020-05-24 09:54:43

  • 您的模块服务器功能没有返回任何内容,因此主服务器模块不知道任何更改。
  • --您不需要命名模块服务器函数中的输入。他们已经是namespaced
  • What了,你想更新什么时候?一点也不清楚.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61977489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档