我打算为我的闪亮应用程序构建一个简单的路由器。这是一个示例:
$date = DateTime::createFromFormat('d', 15)->add(new DateInterval('P1M'));
echo $date->format('Y-m-d'); // 2018-11-15
但是,在点击href链接后,使用两个不同的 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
两次,第一次是预期的“ GotoNavPage-2 ”,而第二次是 NULL 。
经过一段时间的努力,我发现可以解决此问题,可以将 data-toggle` =“ tab” 添加到href中。唯一的变化如下:
发件人:
input$navigateTo
收件人:
tags$a(href="", navto="GotoNavPage-2", "GotoNavPage-2")
我只是不明白为什么更改会生效? tags$a(href="", `data-toggle`="tab", navto="GotoNavPage-2", "GotoNavPage-2")
=“ tab” 的用途是什么?
答案 0 :(得分:1)
您看到的是因为每次您单击链接时页面都会自动刷新。就这么简单!
如果将文本输入添加到UI,这将很明显。在输入中输入一些文本,然后单击链接,您将看到页面刷新。
这是事件的顺序:
当您添加data-toggle="tab"
(或引导程序中的任何其他可能的值)时,Bootstrap javascript具有一些钩子,当您单击具有该特殊属性的链接时,它会忽略它作为链接,即为什么您看不到这种情况呢?
您只需将href由“”更改为“#”,就不会刷新页面
说句公道话,我现在还不清楚这正在发生。首先,我花了5分钟弄不清楚为什么会这样,直到我意识到慢慢调试它以注意到这一点。