2017-07-16 34 views
2

我試圖用比較新的shinyAlert包,看它是否提供了更好的效果比sweetalert包,但我無法弄清楚如何得到這樣的:如何捕獲shinyalert輸入字段可變

Myvar <- shinyalert input text 

從這個最小的例子。

library(shiny) 
library(shinyjs) 
library(shinyalert) 

ui <- fluidPage(
    shinyjs::useShinyjs(), 
    useShinyalert(), 
    actionButton("run", "Run", class = "btn-success") 
) 
server <- function(input, output, session) { 
    shinyEnv <- environment() 

    observeEvent(input$run, { 

    shinyalert('hello', type='input') 
    }) 
} 
shinyApp(ui = ui, server = server) 

我感謝你的任何幫助geniouses那裏。

回答

2

這裏是你如何做到這一點:

library(shiny) 
library(shinyalert) 

ui <- fluidPage(
    useShinyalert(), 
    actionButton("run", "Run", class = "btn-success") 
) 
server <- function(input, output, session) { 

    observeEvent(input$run, { 
    shinyalert('hello', type='input', callbackR = mycallback) 
    }) 

    mycallback <- function(value) { 
    cat(value) 
    } 
} 
shinyApp(ui = ui, server = server) 

它使用回調來完成。如果您願意,您可以將該值分配給反應變量。

上個月我已經完整地記錄了這個軟件包並且即將發佈它,然後我的電腦在我有機會推送到github之前崩潰了,並且失去了所有進展。我沒有機會再次研究它。很抱歉,該文件是不是很大呢,這個軟件包仍然未釋放,需要您自擔風險使用現在:)

(請注意,您不需要shinyjs此)

2

我沒有使用軟件包shinyalert的經驗,但是您可以通過使用廣泛使用的和有據可查的模式對話框來實現想要的功能。也許你有你堅持shinyalert,我不知道過一個原因,但如果不是,實現你想要的模態對話框示例代碼:

ui <- fluidPage(
    shinyjs::useShinyjs(), 
    actionButton("run", "Run", class = "btn-success"), 
    textOutput("output1") 
) 
server <- function(input, output, session) { 

    dataModal <- function(failed = FALSE) { 
    modalDialog(
     textInput("input1", "Enter text:", 
       placeholder = 'Enter text here' 
    ) 
    ) 
    } 

    # Show modal when button is clicked. 
    observeEvent(input$run, { 
    showModal(dataModal()) 
    }) 

    output$output1 <- renderText({ 
    input$input1 
    }) 
} 
shinyApp(ui = ui, server = server) 

讓我知道,如果這有助於!

+0

未經測試是這可能工作,但不會是我正在尋找。有一個原因,因爲我的應用程序已經使用了數十個甜美/閃亮的警報,我想堅持相同的風格 – Mark

+0

好吧,聽起來很合理。我希望有更多閃光包裝經驗的人可以幫助你。 – Florian

+0

我看了一下github存儲庫https://github.com/daattali/shinyalert/blob/master/inst/www/srcjs/shinyalert.js,但我不確定如何找出回調函數 – Mark