首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪亮模块中的动态输入

闪亮模块中的动态输入
EN

Stack Overflow用户
提问于 2022-06-14 07:05:50
回答 1查看 30关注 0票数 0

在使用闪亮的模块时,我很难制作一个动态的selectInput()

我有以下应用程序(没有模块):

代码语言:javascript
复制
library(shiny)

ui <- fluidPage(
    numericInput("n", "n", 10),
    uiOutput("select"),
    uiOutput("res")
)

server <- function(input, output, session) {
  output$select <- renderUI(
    selectInput("sample_size", "Sample size", choices = 1:input$n)
  )
  output$res <- renderUI(
    renderPrint(rnorm(input$sample_size))
  )
}

shinyApp(ui, server)

我不知道如何正确使用名称空间时,模块化这个应用程序。我目前的尝试如下:

代码语言:javascript
复制
library(shiny)

sampleUI <- function(id){
  ns <- NS(id)
  fluidPage(
    numericInput("n", "n", 10),
    uiOutput(ns("select")), 
    uiOutput("res")
  )
}

sampleServer <- function(input, output, session) {
  output$select <- renderUI(
    selectInput("sample-size", "Sample size", choices = 1:input$n)
  )
  output$res <- renderUI(
    renderPrint(rnorm(input$sample_size))
  )
}

ui <- fluidPage(
  sampleUI("mod1")
)

server <- function(input, output, session) {
  callModule(sampleServer, "mod1")
}

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-14 07:55:04

在服务器模块中创建新ID时,请始终在ID周围使用session$ns。还修正了UI函数中的错误和ns():

代码语言:javascript
复制
library(shiny)

sampleUI <- function(id){
  ns <- NS(id)
  fluidPage(
    numericInput(ns("n"), "n", 10),
    uiOutput(ns("select")), 
    uiOutput("res")
  )
}

sampleServer <- function(input, output, session) {
  output$select <- renderUI(
    selectInput(session$ns("sample_size"), "Sample size", choices = 1:input$n)
  )
  output$res <- renderUI(
    renderPrint(rnorm(input$sample_size))
  )
}

ui <- fluidPage(
  sampleUI("mod1")
)

server <- function(input, output, session) {
  callModule(sampleServer, "mod1")
}

shinyApp(ui, server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72612784

复制
相关文章

相似问题

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