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