首页 > 解决方案 > 如何在闪亮应用的导航栏中获取 actionLink?

问题描述

我希望用户单击导航栏中的链接并执行某个操作(就像他们单击了 actionLink 或 actionButton)。但是,似乎将项目添加到导航栏的唯一方法是创建一个 tabPanel。如果我创建一个仅包含 actionLink 的 tabPanel,则会提供一个链接,但它不与 tabPanel 的其余部分内联。

有关示例,请参见下面的代码:

library(shiny)

ui <- shinyUI(
  navbarPage(title = "This is the navbar",
             tabPanel("Tab 1"),
             tabPanel("Tab 2"),
             tabPanel(actionLink("Save_button", "Save")))
)


server <- function(input, output) {

  observeEvent(input$Save_button,{

    print("You just clicked the actionLink in the navbar")

  }) 

}

shinyApp(ui = ui, server = server)

如您所见,名为“保存”的 actionLink 在导航栏中可见,但其上方有一个空框/空间。如果您单击“保存”操作链接上方的该空间,那么您将导航到一个空选项卡。有没有办法摆脱 actionLink 上方的空白空间,以便 actionLink 与 tabPanels 的重置内联,并且用户不会被带到空选项卡?

或者您知道在导航栏中包含 actionButton 或 Link 的更好方法吗?

非常感谢!

标签: rshinynavbar

解决方案


我建议在单击 a 后使用 的id参数navbarPage来触发反应tabPanel。请检查以下内容:

library(shiny)

ui <- shinyUI(
  navbarPage(
    title = "This is the navbar",
    id = "navbarID",
    tabPanel("Tab 1"),
    tabPanel("Tab 2"),
    tabPanel("Save")
  )
)

server <- function(input, output, session) {
  observeEvent(input$navbarID, {
    if (input$navbarID == "Save") {
      print("You just clicked 'Save' in the navbar")
    }
  })
}

shinyApp(ui = ui, server = server)

推荐阅读