Заранее благодарю за помощь.Я пытался свести мою проблему к такому простому приложению, какое только мог создать.У меня есть функция sliderResetInput, которая вызывает наблюдаемое событие и возвращает некоторые элементы пользовательского интерфейса.Я могу использовать sliderResetInput вне модуля (будет продемонстрировано ниже), но я не могу использовать его внутри модуля.Я думал, что это была проблема с обертыванием пространства имен вокруг моих входов, но я думаю, что все удостоверение личности здесь проверено.В чем дело?Как примечание, хотя эта конструкция кажется слишком сложной для этого приложения, мне нужна структура для гораздо большего приложения.
Это работает:
library(shiny) # Version 1.0.5
sliderResetInput = function(id, input, output, session) {
observeEvent(input[[paste0(id, "_reset_slider")]],
updateSliderInput(session = session, inputId = paste0(id, "_slider"), value = c(0, 10)))
out = list(
sliderInput(inputId = paste0(id, "_slider"), label = "Slider", min = 0, max = 10, value = c(0, 10)),
actionButton(inputId = paste0(id, "_reset_slider"), label = "Reset slider")
)
return(out)
}
server <- function(input, output, session) {
getSliders = reactive(sliderResetInput(id = "test1", input, output, session))
output$sliders = renderUI(getSliders())
observeEvent(input$browser, browser())
}
ui <- fluidPage(
uiOutput(outputId = "sliders"),
actionButton(inputId = "browser", "Click me to go into browser()")
)
shinyApp(ui = ui, server = server, options = list(launch.browser = T))
С той же функцией sliderResetInput (),это НЕ работает:
library(shiny) # Version 1.0.5
sliderResetInput = function(id, input, output, session) {
observeEvent(input[[paste0(id, "_reset_slider")]],
updateSliderInput(session = session, inputId = paste0(id, "_slider"), value = c(0, 10)))
out = list(
sliderInput(inputId = paste0(id, "_slider"), label = "Slider", min = 0, max = 10, value = c(0, 10)),
actionButton(inputId = paste0(id, "_reset_slider"), label = "Reset slider")
)
return(out)
}
myModuleUI = function(id) {
ns = NS(id)
tagList(
uiOutput(outputId = ns("sliders"))
)
}
myModule = function(input, output, session) {
ns = session$ns
getSliders = reactive(sliderResetInput(id = ns("test1"), input, output, session))
output$sliders = renderUI(getSliders())
}
server <- function(input, output, session) {
callModule(myModule, id = "A")
observeEvent(input$browser, browser())
}
ui <- fluidPage(
myModuleUI(id = "A"),
actionButton(inputId = "browser", "Click me to go into browser()")
)
shinyApp(ui = ui, server = server, options = list(launch.browser = T))
Кто-нибудь знает, что здесь происходит?
Спасибо, что уделили время!