我希望能够使用shinyjs show和hide来打开/关闭我的UI的各个部分。我需要从模块内访问模块外部的UI部分。这可能吗。请参阅随附的应用代码。主服务器代码中的显示/隐藏按钮有效,但模块中的显示/隐藏按钮不起作用。
感谢您的任何建议。
exampleUI <- function(id) {
ns <- NS(id)
tagList(actionButton(ns("hide_id"), "Module - Hide divs"),
actionButton(ns("show_id"), "Module - Show divs"),
uiOutput(ns("plot_id")))
}
shinyUI(fluidPage(
shinyjs::useShinyjs(),
shinyjs::hidden(tags$div(id = "hidden", "hidden")),
tags$div(id = "shown", "shown"),
actionButton("hide_id", "Hide divs"),
actionButton("show_id", "Show divs"),
exampleUI("eg")))
example <- function(input, output, session)
{
ns <- session$ns
observeEvent(input$hide_id,
{
shinyjs::hide("hidden")
shinyjs::hide("shown")
})
observeEvent(input$show_id,
{
shinyjs::show("hidden")
shinyjs::show("shown")
})
}
shinyServer(function(input, output) {
callModule(example, "eg")
observeEvent(input$hide_id,
{
shinyjs::hide("hidden")
shinyjs::hide("shown")
})
observeEvent(input$show_id,
{
shinyjs::show("hidden")
shinyjs::show("shown")
})
})
答案 0 :(得分:0)
直到release v1.1 (January, 2020)问世,这是不可能的。在该版本中引入了参数 if value == 'foo'
。我引用:
当 asis
时,ID 在模块内部时不会被命名空间。
这是显示其工作原理的询问者代码的改编表示:
asis=TRUE