Я пытаюсь присвоить реактивное значение внутри модуля . У меня есть два варианта использования, и один, кажется, работает «mod1», а другой «mod2» не работает
library(shiny)
mod1UI = function(id){
ns = NS(id)
uiOutput(ns("selector"))
}
mod1 = function(input, output, session){
ns = session$ns
output$selector <- renderUI({selectInput(
ns("selected_table"),
label = "View Data",
choices = list(one = "one", two = "two"),
selected = "one"
)
})
session$userData$dataChoice = reactive({req(input$selected_table) })
}
mod2UI = function(id){
ns = NS(id)
DT::dataTableOutput(ns("mainTable_choice2"))
}
mod2 = function(input, output, session){
ns = session$ns
data <- reactive({
choice = session$userData$dataChoice()
#print(choice)
if(choice == "one"){
dta = iris
}else if(choice == "two"){
dta = Orange
}
})
output$mainTable_choice2 = DT::renderDataTable({
options = list(autoWidth = TRUE, searching = TRUE)
#browser()
data_ = data()
datatable(data_)
})
reactive({
data = data()
choice = session$userData$dataChoice()
if(choice == "one"){
session$userData$Var1 <- reactive({req(data[input$mainTable_choice2_rows_selected,1])})
}
})
}
# Define UI for application
ui <- fluidPage(
# Application title
titlePanel("Minimum Example"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
mod1UI("mod1")
),
mainPanel(
mod2UI("mod2")
)
)
)
server <- function(input, output, session) {
callModule(mod1, "mod1")
callModule(mod2, "mod2")
#swap Var1 for dataChoice and it works !!!
observeEvent(session$userData$Var1(), {showModal(modalDialog(
title = "Are you sure",
textInput("text",label = "test" , value = "testHL02"),
easyClose = TRUE,
footer = tagList(
modalButton("Cancel"),
actionButton("delete", "Delete")
)))})
}
# Run the application
shinyApp(ui = ui, server = server)
Я могу получить доступ к session$userData$dataChoice()
внутри наблюдателя и реактиву в другом модуле и получить результат .
Я не могу позвонить session$userData$Var1()
другому наблюдателю. Вместо этого я получаю следующую ошибку:
Ошибка в наблюдаемомЭкспре: попытка применить нефункциональный
Это иллюстрируется при обмене dataChoice с Var1 в наблюдаемом событии в функции сервера .
Кто-нибудь знает почему?
Спасибо JP