我的目标是创建一个ShinyApp,只要用户点击submitButton就会打开一个新的空UI。
目前这是我的代码。如果用户在文本框中键入内容并按“提交”。该应用程序显示用户在主面板中键入的内容。但是我不希望看到文本,而是当用户点击提交按钮时,它应该打开一个新的空UI。
ui = shinyUI(fluidPage(
titlePanel("submitButton example"),
fluidRow(
column(3, wellPanel(
textInput("text", "Text:", "text here"),
submitButton("Submit")
)),
verbatimTextOutput("text")
)
)
)
server = function(input, output) {
output$plot1 <- renderPlot({
hist(rnorm(input$n))
})
output$text <- renderText({
paste("Input text is:", input$text)
})
}
shinyApp(ui=ui, server=server)
这可能吗?任何提示或指示都表示赞赏。
答案 0 :(得分:2)
嗯,这还不是很实用,但你要求的是什么。
ui = shinyUI(fluidPage(
titlePanel("submitButton example"),
fluidRow(
uiOutput("newWindowContent", style = "display: none;"),
tags$script(HTML("
$(document).ready(function() {
if(window.location.hash != '') {
$('div:not(#newWindowContent)').hide();
$('#newWindowContent').show();
$('#newWindowContent').appendTo('body');
}
})
")),
a(href = "#NEW", target = "_blank",
actionButton("Submit", "Submit")
)
))
)
server = function(input, output) {
output$newWindowContent <- renderUI({
"Welcome to your new window!"
})
}
shinyApp(ui=ui, server=server)
创建应用程序,以便在newWindowContent
中创建的ui显示在新窗口中。遗憾的是,新窗口与父页面有些截然不同,因此没有简单的方法可以独立配置每个页面。目前,所有内容都显示相同内容。没有反应性功能。我猜可以有初始配置,如果使用窗口的哈希。但这只适用于客户端。
尽管如此,这是一个好的开始!