我正在 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”按钮时页面不会改变
无需测试:尝试将家长的会话传递给
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)
# ...
}