0

community.rstudio.com交叉发布

我正在为我的 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
4

0 回答 0