如果在单击操作按钮时如何在R中打开新浏览器?这个新浏览器应显示在fluidpage内创建和定义的表单:
例如
observeEvent (input$button1, {
output$view <- renderUI({isolate({
div(id="view1",
fluidPage(shinyjs::useShinyjs(),
fluidRow(column(3,
textInput("mrdno",label = "MRD NO:",value="111")),
column(3,
textInput("namevpmodify",label = "NAME",value="AAA") )
)))
})})})
我希望显示div id="view1"
中定义的表单,以便在单击按钮按钮1时显示在另一个浏览器窗口中。
答案 0 :(得分:0)
我不认为你可以创建一个没有第二个R实例的单独窗口(即第二个Shiny应用程序)。您可以轻松打开一个包含任意HTML的新窗口,但它不会像Shiny应用程序那样链接到服务器中的R,因此您无法包含textInput
,但是可能是一种让新窗口与服务器通信的方法(我怀疑它)。请参阅下面的示例,了解如何使用任意HTML创建新窗口:
library(shiny)
runApp(
list(
ui = fluidPage(
tags$script(
"Shiny.addCustomMessageHandler('new-page', function(HTML) {
var w=window.open();
$(w.document.body).html(HTML);
});"
),
textInput("html","Enter arbitrary HTML"),
actionButton("btn","Press Me to render HTML in new window")
),
server = function(input, output, session) {
observeEvent(input$btn,{
session$sendCustomMessage("new-page",list(
HTML(
input$html
)
)
)
})
}
)
)
您可能对shinyBS
软件包创建模态窗口的能力感兴趣。所以你想在UI中想要一些东西,比如
bsModal("view1","pickAname","button1", fluidRow(column(3,
textInput("mrdno",label = "MRD NO:",value="111")),
column(3,
textInput("namevpmodify",label = "NAME",value="AAA") )