R shinyjs显示/隐藏不在模块中工作

时间:2017-08-08 06:36:08

标签: module shinyjs

我希望能够使用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")
    })
})

1 个答案:

答案 0 :(得分:0)

直到release v1.1 (January, 2020)问世,这是不可能的。在该版本中引入了参数 if value == 'foo'。我引用:

<块引用>

asis 时,ID 在模块内部时不会被命名空间。

这是显示其工作原理的询问者代码的改编表示:

asis=TRUE