2016-06-16 11 views
1

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.

+0

Danke, Ihr Kommentar hat mir geholfen, es herauszufinden, – Carl

Antwort

2

benötigt

return(reactive(input$testTable_rows_selected)) 
Verwandte Themen