Я собираюсь создать простой маршрутизатор для моего блестящего приложения. Вот пример:
library(shiny)
ui <- fluidPage(
uiOutput("landingPage"),
tags$script(HTML(
'$(document.body).on("click", "[navto]",
function (e) {
Shiny.onInputChange("navigateTo", $(e.currentTarget).attr("navto"));
});'
))
)
server <- function(input, output) {
output$landingPage <- renderUI({
print(paste("Landing ", input$navigateTo))
toOut <- pageSplashUI()
return(toOut)
})
}
pageSplashUI <- function() {
tags$a(href="", navto="GotoNavPage-2", "GotoNavPage-2")
}
# Run the application
shinyApp(ui = ui, server = server)
Однако output$landingPage
обновлялось дважды с двумя различными значениями input$navigateTo
после нажатия на ссылку href, первый раз - ожидаемое " GotoNavPage-2 ", а второй раз равен NULL .
Поработав некоторое время, я обнаружил, что проблему можно решить, добавив data-toggle` = "tab" в href. Единственное изменение следующее:
От:
tags$a(href="", navto="GotoNavPage-2", "GotoNavPage-2")
Кому:
tags$a(href="", `data-toggle`="tab", navto="GotoNavPage-2", "GotoNavPage-2")
Теперь программа работает, как и ожидалось:
Я просто не понимаю, почему изменения вступают в силу? Какая польза от data-toggle
= "табуляция" ?