Как получить actionLink в навигационной панели блестящего приложения? - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу, чтобы пользователи нажимали на ссылку в панели навигации и выполнялось определенное действие (как если бы они щелкали по actionLink или actionButton).Тем не менее, кажется, что единственный способ добавить элементы в панель навигации - это создать tabPanel.Если я создаю tabPanel, которая содержит только actionLink, предоставляется ссылка, но она не соответствует остальным tabPanels.

См. Код ниже для примера:

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 с именем "Save" виден в панели навигации, но над ней есть пустое поле / пробел.Если вы щелкнете это пространство над «Сохранить» actionLink, то перейдете на пустую вкладку.Есть ли способ избавиться от этого пустого пространства над actionLink, чтобы actionLink был встроен при сбросе tabPanels и пользователь не попал на пустую вкладку?

Или вы знаете олучший способ включить actionButton или Link в панель навигации?

Большое спасибо!

1 Ответ

1 голос
/ 27 сентября 2019

Я бы рекомендовал использовать аргумент 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)
...