我正在为我的 shinyApp 编写代码(使用 golem 包和模块 - 不确定它是否重要)。我堆叠了按钮的工具提示,该按钮未出现在我的应用程序中,但在我尝试创建为 reprex 的应用程序中完美运行。我找不到这个问题来自哪里。可能是模块通信有问题。
这是我尝试做一个reprex(这显然不是一个reprex)。简而言之,mod_body_... 为dashboardPage() 创建一个框。Box 包含一个 shinyWidgets::actionBttn()。由于它没有工具提示选项,我使用 shinyBS::tipify() 添加工具提示。在这里它工作得很好,但是当我将它复制粘贴到我的应用程序中时,它返回按钮但没有工具提示。我还尝试在相同和不同的选项卡上提示其他对象,但工具提示仍然在途中丢失。
有谁知道出了什么问题?
library(shiny)
library(shinyBS)
library(shinyWidgets)
mod_body_ui <- function(id){
ns <- NS(id)
tab_item <- shinydashboard::tabItem(
tabName = "test_tab",
fluidRow(
shinydashboardPlus::box(
title = "Test box",
width = 4,
collapsible = TRUE,
icon = shiny::icon("plus"),
htmlOutput(outputId = ns("bttns"))
)
)
)
return(tab_item)
}
mod_body_server <- function(id){
moduleServer( id, function(input, output, session){
ns <- session$ns
output$bttns <- renderUI({
btn_remove <- shinyBS::tipify(
shinyWidgets::actionBttn(
inputId = ns("remove_selected"),
label = shiny::icon("minus"),
style = "material-flat",
size = "sm"
),
title = "Remove selected from the library",
placement = "right"
)
return(btn_remove)
})
})
}
ui <- function(request) {
tagList(
shinydashboardPlus::dashboardPage(
title = "Test",
md = FALSE,
scrollToTop = TRUE,
header = shinydashboardPlus::dashboardHeader(title = "Header"),
sidebar = shinydashboardPlus::dashboardSidebar(
shinydashboard::menuItem(text = "Test",
tabName = "test_tab")
),
body = shinydashboard::dashboardBody(
id = "body",
shinydashboard::tabItems(
mod_body_ui("body_ui")
)
)
)
)
}
server <- function(input, output, session) {
mod_body_server("body_ui")
}
shinyApp(ui, server)
我的应用程序的结构大致如下(每一行 - 单独的文件):
UI/Server (define dashbosrdPage):
module header
module sidebar
module body
module tab1
module tab2
module box1
module box2