2016-08-23 34 views
2

如何被點擊的actionbutton當打開R中一個新的瀏覽器,這個新的瀏覽器應顯示創建並定義了內部fluidpage形式:如何在點擊動作按鈕時在R中打開新的瀏覽器?

例如

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")) 
    ))) 
})})}) 

我想顯示定義的形式當點擊按鈕1時,在div id="view1"內部顯示在另一個瀏覽器窗口中。

回答

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")) 
+0

謝謝主席先生,但我創造在另一個按鈕的observeevent服務器端的按鈕Button1的,那怎麼辦代碼寫成bsModel的界面內寫入.R和id button1在那裏不可用。 – Rad

相關問題