首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SubItem打开带有actionButton的菜单

如何使用SubItem打开带有actionButton的菜单
EN

Stack Overflow用户
提问于 2021-11-01 20:17:26
回答 1查看 99关注 0票数 1

我正在开发我的第一个闪亮的应用程序,我想在mainPage上设置一些按钮,这些按钮可以重定向到我创建的菜单subItens。

我试着用菜单subItens链接来做这件事,但是没有起作用。因此,我复制了用于执行菜单subItens的代码,并将其放入actionButton代码中。它运行良好,但只是在第一次点击。我需要重新加载页面到按钮工作。

你们知道怎么修吗?

这里是menuSubItem代码

代码语言:javascript
复制
sidebarMenu( id = "tabs",
          menuItem("Conjuntura", tabName = "conjuntura", icon = icon("chart-bar"),
                   menuSubItem("Visão Geral",
                               tabName = "visao_geral"),
                   menuSubItem("Atividade Econômica",
                               tabName = "atividade_economica"),
dashboardBody(
        tabItems(
          # tab visão geral
          tabItem(
            tabName = "visao_geral",
            mod_conj_titulo_ui("titulo_ui_1")
          ),
          # tab conjuntura
          tabItem(
            tabName = "atividade_economica",
            mod_conj_atividade_economica_ui("atividade_economica_ui_1"),
            mod_conj_atividade_economica_es_ui("atividade_economica_es_ui_1")
            )

这里是按钮代码

代码语言:javascript
复制
actionButton(inputId = "atividade_economica", 
                 label = menuSubItem(HTML("<br>Atividade<br>Econômica"),
                                     tabName = "atividade_economica", 
                                     icon = icon("chart-line", class = "icon")),
                 class = "button"
                 )

我没有在服务器上放任何东西来运行按钮。我想这就是问题所在。

EN

回答 1

Stack Overflow用户

发布于 2021-11-03 09:52:58

最简单的方法是依赖加载的bootstrap JavaScript库,为您处理切换。因此,您只需要在某个地方放置一个<a>标记,该标记具有适当的data-toggledata-value属性。

一些额外的JavaScript可以正确突出显示菜单栏中选定的选项卡,从而使整个过程接近:

代码语言:javascript
复制
library(shinydashboard)
library(shiny)

js <- HTML(paste("$(() => $('.mimic-menu').on('click', function() {",
                 "   const menu_item = $(this).data('value');",
                 "   const $parent = $('.sidebar-menu [data-value=\"' + menu_item + '\"]').closest('li');",
                 "   $('.sidebar-menu li').removeClass('active');",
                 "   $parent.addClass('active');",
                 "}));", sep = "\n"))

header <- dashboardHeader()

sidebar <- dashboardSidebar(
   sidebarMenu(
      id = "tabs",
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
      menuItem("Widgets", icon = icon("th"), tabName = "widgets", badgeLabel = "new",
               badgeColor = "green"),
      menuItem("Charts", icon = icon("bar-chart-o"),
               menuSubItem("Sub-item 1", tabName = "subitem1"),
               menuSubItem("Sub-item 2", tabName = "subitem2")
      )
   )
)
body <- dashboardBody(
   tags$head(tags$script(js)),
   tabItems(
      tabItem("dashboard",
              div(p("Dashboard tab content"))
      ),
      tabItem("widgets",
              "Widgets tab content",
              tags$a(href = "#shiny-tab-dashboard", `data-toggle` = "tab",
                     class = "btn btn-default mimic-menu",
                     `data-value` = "dashboard", "Click to go to dashboard")
      ),
      tabItem("subitem1",
              "Sub-item 1 tab content",
              tags$a(href = "#shiny-tab-dashboard", `data-toggle` = "tab",
                     class = "btn btn-default mimic-menu",
                     `data-value` = "dashboard", "Click to go to dashboard")
      ),
      tabItem("subitem2",
              "Sub-item 2 tab content",
              tags$a(href = "#shiny-tab-dashboard", `data-toggle` = "tab",
                     class = "btn btn-default mimic-menu",
                     `data-value` = "dashboard", "Click to go to dashboard")
      )
   )
)

shinyApp(
   ui = dashboardPage(header, sidebar, body),
   server = function(input, output) { }
)

解释

我们所需要做的就是使用一个属性标签,该标记设置属性data-value = <name of the tab we want to switch to>.

  • Then,automagically.

  • However,和data-toggle = "tab" data-toggle = "tab",这将导致侧边栏中的最后一个选定菜单项被高亮显示的不干净状态,即使我们切换了选项卡。因此,我们添加了一些自定义的JavaScript,它对自创链接上的单击做出反应,从而在侧边栏菜单中选择合适的项目。

  • 给该链接赋予按钮的外观和感觉,我们添加btnbtn-default类。mimic-menu类是功能性的,可以触发上述代码.

屏幕截图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69802354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档