微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用另一个模块中的按钮触发一个模块中的操作?

如何解决如何使用另一个模块中的按钮触发一个模块中的操作?

我在一个模块(侧边栏模块)中有一个按钮。单击此按钮后,应显示一个简单的 ui 绝对面板。由于某些原因,absolutePanel 必须放置在另一个模块(主体模块)中。总的来说,当我点击放置在侧边栏中的按钮时,一些东西(这里:面板)会出现在一个正文中。我想知道如何使用另一个模块(侧边栏)中的按钮调用一个模块(主体)中存在的 ui(不是输出)。这是我的简单示例:

侧边栏模块:

mod_sidebar_ui <- function(id){
  ns <- NS(id)

  sidebar = dashboardSidebar(
  actionButton(ns("btnX"),"Click me")

)}

mod_sidebar_server <- function(id){
  moduleServer(id,function(input,output,session) {
      
      observeEvent(input$btnX,{
        shinyjs::toggle(id = "panelX")
      })      
    })
}

主体模块:

mod_body_ui <- function(id){
  ns <- NS(id)

  body = bs4Dash::dashboardBody(    
    shinyjs::useShinyjs(),# this panel should show up after clicking button from first module
    shinyjs::hidden(absolutePanel(id = "panelX",tagList(shinyWidgets::actionBttn(inputId = "btn11",label = NULL,style = "material-circle",icon = icon("chart-line")),shinyWidgets::actionBttn(inputId = "btn22",icon = icon("user-friends")))))
)}

应用

app_ui <- function(request) {  
  tagList(
    golem_add_external_resources(),bs4Dash::dashboardPage(      
       header = bs4Dash::dashboardHeader(),mod_sidebar_ui("sidebar_ui"),mod_body_ui("body_ui") 
  ))
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。