【问题标题】:opening a new empty shiny ui through actionbutton通过操作按钮打开一个新的空闪亮 ui
【发布时间】:2016-05-11 17:31:52
【问题描述】:

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

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

【问题讨论】:

  • 我不是 100% 你所说的“空 ui”,但这里有一个示例如何创建动态 UI shiny.rstudio.com/gallery/dynamic-ui.html
  • 我很确定,您不希望只是空页面,而是一些更困难的事情。你能举出一些例子,新页面应该包含什么以及它们与“父”共享哪些信息?

标签: r shiny


【解决方案1】:

嗯,这还不是很实用,但可以满足您的要求。

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 将显示在新窗口中。可悲的是,新窗口与父页面有些分离,因此没有简单的方法来独立配置每个页面。目前,都显示相同的内容。没有一个具有反应性特征。如果使用窗口的哈希值,我想可能会有初始配置。但这仅适用于客户端。

不过,这是一个好的开始!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 2015-12-12
    • 1970-01-01
    • 2020-03-22
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多