updateTabItems 问题。在 R 中与 Golem 一起闪亮

问题描述 投票:0回答:1

我正在 R 中使用 golem 构建一个应用程序。我正在尝试通过按钮将 TabItem 从 tabItem (acceuil) 更改为其他 tabItem (Rating)

这是模块“Acceuil”

mod_Accueil_ui <- function(id){
  ns <- NS(id)
  tagList(
    actionButton(ns("do"), "Click Me")
 
  )
}
    
#' Accueil Server Functions
#'
#' @noRd 
mod_Accueil_server <- function(id){
mod_Accueil_server <- function(id){
  moduleServer( id, function(input,output,session){
   
     ns <- session$ns
    
     observeEvent(input$do, {
      updateTabItems(session = session,inputId = "menu",selected = "Rating")
      
    })
   
  })
}

mod_Acceuil 似乎无法识别 updateTabItems 中的 inputId 和选择。 这是app_ui部分

sidebarMenu(id="menu", 
                tags$head(                
                menuItem("Rating", tabName = "Rating"),
                menuItem("Accueil", tabName = "Accueil")

))
tabItems(
    tabItem("Rating",mod_calcul_ui("calcul_ui_1") ),
    tabItem("Accueil",mod_Accueil_ui("Accueil_1") )
    )

所以问题是当我点击“Click me”按钮时页面不会改变

r shiny shinydashboard golem bs4dash
1个回答
2
投票

无需测试:尝试将家长的会话传递给

updateItems
。这需要将父级会话添加到服务器模块:

mod_Accueil_server <- function(id, parent) moduleServer(id, 
    function(input,output,session) {
        ns <- session$ns
        observeEvent(input$do, {
           updateTabItems(
               session=parent,  # not the module's session
               inputId="menu",selected = "Rating"
           )
        })
    })

然后在主服务器功能中:

server <- function(input,output,session) {
    mod_Accueil_server(id="Accueil", parent=session)
    # ...
}
© www.soinside.com 2019 - 2024. All rights reserved.