Ich versuche, diese grundlegende funktionierende glänzende App zu nehmen und sie zu modularisieren. Dies funktioniert:DataTable Zeilenauswahl in glänzendem Modul
shinyApp(
ui = fluidPage(
DT::dataTableOutput("testTable"),
verbatimTextOutput("two")
),
server = function(input,output) {
output$testTable <- DT::renderDataTable({
mtcars
}, selection=list(mode="multiple",target="row"))
output$two <- renderPrint(input$testTable_rows_selected)
}
)
ich dieses ein Modul machen möchten, die
# UI element of module for displaying datatable
testUI <- function(id) {
ns <- NS(id)
DT::dataTableOutput(ns("testTable"))
}
# server element of module that takes a dataframe
# creates all the server elements and returns
# the rows selected
test <- function(input,output,session,data) {
ns <- session$ns
output$testTable <- DT::renderDataTable({
data()
}, selection=list(mode="multiple",target="row"))
return(input[[ns("testTable_rows_selected")]])
}
shinyApp(
ui = fluidPage(
testUI("one"),
verbatimTextOutput("two")
),
server = function(input,output) {
out <- callModule(test,"one",reactive(mtcars))
output$two <- renderPrint(out())
}
)
Das gibt mir Fehler für jede data.frame arbeiten sagen, ich bin versucht, die Reaktivität zu verwenden, außerhalb einer reaktiven Umgebung. Wenn ich die return-Anweisung beseitige, wird sie ausgeführt. Gibt es trotzdem die Zeilen, die aus einer Datentabelle in einem glänzenden Modul ausgewählt wurden? Jede Hilfe wäre willkommen.
Danke, Ihr Kommentar hat mir geholfen, es herauszufinden, – Carl