gpt4 book ai didi

module - R shinyjs 显示/隐藏在模块中不起作用

转载 作者:行者123 更新时间:2023-12-03 17:37:32 25 4
gpt4 key购买 nike

我希望能够使用 shinyjs 显示和隐藏来打开/关闭我的 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")
})
})

最佳答案

这在 release v1.1 (January, 2020) 之前是不可能的出来。随着该版本的发布,参数 asis被介绍了。我引用:

When asis=TRUE, the ID will not be namespaced when inside a module.


这是询问者代码的改编代表,显示了它是如何工作的:
library(shiny)
library(shinyjs)

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")))
}


example <- function(input, output, session)
{
ns <- session$ns

observeEvent(input$hide_id, {
shinyjs::hide("hidden", asis = TRUE)
shinyjs::hide("shown", asis = TRUE)
shinyjs::hide("plot_id")
})
observeEvent(input$show_id, {
shinyjs::show("hidden", asis = TRUE)
shinyjs::show("shown", asis = TRUE)
shinyjs::show("plot_id")
})
output$plot_id <- renderUI({
"This is the module calling ..."
})
}

UI <- function() {
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"))
}

server <- function(input, output, session) {

callModule(example, "eg")
observeEvent(input$hide_id, {
shinyjs::hide("hidden")
shinyjs::hide("shown")
})
observeEvent(input$show_id, {
shinyjs::show("hidden")
shinyjs::show("shown")
})
}

shinyApp(UI, server)

关于module - R shinyjs 显示/隐藏在模块中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45560947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com