Dynamisches Hinzufügen von Modulen in glänzendem

Hier geht es nicht darum, Module mit renderUI zu erstellen. Mit renderUI, wie ich es verstehe, setzen Sie einen Platzhalter in die UI-Funktion und schreiben dann Ihre Steuerelemente / Widgets in die Server-Funktion.

Module bestehen aus zwei Teilen. Einen Teil müssen Sie mit callModule () zur UI-Funktion und einen anderen Teil zur Server-Funktion hinzufügen.

Ich habe ein Slider-Modul. Ich möchte es einem Wellpanel hinzufügen, wenn auf eine Schaltfläche "Hinzufügen" geklickt wird. Wenn es hilft, können Sie sich vorstellen, das Modul so oft zu duplizieren, wie ich möchte, wenn auf eine Schaltfläche geklickt wird. Die doppelten Module sollten alle unabhängig sein.

Visuel

ch möchte wissen, wie eine Aktionsschaltfläche den UI-Teil des Moduls innerhalb der UI-Funktion und den Server-Teil innerhalb der Server-Funktion hinzufügen kan

#Dynamically adding modules
library(shiny)

#slider module ------------------------
sliderUI <- function(id) {
  ns <- NS(id)
  sliderInput(ns("bins"), "Number of Bins:", min = 1, max = 5, value = 3)
}

slider <- function(input, output, session) {}


#shiny app ------------------------
ui <- fixedPage(
  fixedRow(
    column(width = 4, wellPanel(
      h4("Slider Module"),
      sliderUI("slider"),
      actionButton("addSliderModule", "Add Slider Module"))
    ),
    column(width = 4, wellPanel(
      h4("Dynamic Loading Modules"),
      p("Clicking on the 'Add' button on the left should add the module here. You should be able to duplicate that slider module as many times as the button is clicked"),
  hr())
    )
  )
)

server <- function(input, output, session) {
   observeEvent(input$addSliderModule, {
      #what goes here
   })
}

shinyApp(ui, server)

cross geschrieben am shiny-group

Antworten auf die Frage(8)

Ihre Antwort auf die Frage