moduleServer does not have the ... to add additional parameters to the module function like callModule

According to documentation:

Note: As of Shiny 1.5.0, we recommend using moduleServer() instead of callModule(), because the syntax is a little easier to understand, and modules created with moduleServer can be tested with testServer().

But here is the docs for callModule:

Usage

callModule(module, id, ..., session = getDefaultReactiveDomain())

Arguments

  • module A Shiny module server function
  • id An ID string that corresponds with the ID used to call the module's UI function
  • ... Additional parameters to pass to module server function
  • session Session from which to make a child scope (the default should almost always be used)

And here is the docs for moduleServer:

Usage

moduleServer(id, module, session = getDefaultReactiveDomain())

Arguments

  • id An ID string that corresponds with the ID used to call the module's UI function.
  • module A Shiny module server function.
  • session Session from which to make a child scope (the default should almost always be used).

How do I add additional parameters to the server function without the ...?

Upvotes: 0

Views: 240

Answers (1)

TTS
TTS

Reputation: 1928

moduleServer will live inside the server-side portion of the module you create. It contains only the id and the module itself. The employeeInfoServer passes id as well as employee_. This could pass any number of additional arguments such as function(id, employee_, hair_color, eye_color, city) etc... Those variable are then accessible in the moduleServer

employeeInfoServer <- function(id, employee_) {
  moduleServer(
    id,
    function(input, output, session) {
      output$job_title<- renderUI({
        h3(users[match(employee_, users$Name), "Job Title"]) 
      })
    }
  )
}

...maybe this makes more sense. yourmoduleServer is the server-side of the module you're creating.

yourmoduleServer <- function(id, ...) {
  moduleServer(id, module)
}

Upvotes: 3

Related Questions