通过actionbutton

时间:2016-05-10 22:53:51

标签: r shiny

我的目标是创建一个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)

这可能吗?任何提示或指示都表示赞赏。

1 个答案:

答案 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显示在新窗口中。遗憾的是,新窗口与父页面有些截然不同,因此没有简单的方法可以独立配置每个页面。目前,所有内容都显示相同内容。没有反应性功能。我猜可以有初始配置,如果使用窗口的哈希。但这只适用于客户端。

尽管如此,这是一个好的开始!