保存shinyalert的变量输出

时间:2018-05-24 17:02:07

标签: shiny shinyjs

我想保存shinyalert警告(https://github.com/daattali/shinyalert)的输出结果(TRUE / FALSE)。这篇文章有助于将值打印到控制台(How to capture shinyalert input field as variable),但我无法将值本身保存为变量。

foo_view.removeCurrentError();

这将自动打印到控制台shinealert的值。将shinyalert设置为变量或函数中的值似乎没有做任何事情:

library(shiny)
library(shinyalert)

ui <- fluidPage(
  useShinyalert()
)


server <- function(input, output) {

  shinyalert(
    title = "Warning",
    text = "Some warning",
    closeOnEsc = FALSE,
    closeOnClickOutside = FALSE,
    type = "warning",
    showConfirmButton = TRUE,
    showCancelButton = TRUE,
    confirmButtonText = "OK",
    cancelButtonText = "Cancel",
    animation = TRUE,
    callbackR = mycallback
  )


}


shinyApp(ui, server)

1 个答案:

答案 0 :(得分:1)

在这种情况下忘记函数,只需使用observeEvent观察警报,因为可以通过输入$ shinyalert访问回调值。

alert<-shinyalert(
title = "Warning",
text = "Some warning",
closeOnEsc = FALSE,
closeOnClickOutside = FALSE,
type = "warning",
showConfirmButton = TRUE,
showCancelButton = TRUE,
confirmButtonText = "OK",
cancelButtonText = "Cancel",
animation = TRUE,
callbackR = NULL
)

observeEvent(input$shinyalert,
value<<-input$shinyalert
)

注意:我已将值变量指定为全局,请确保您真正指定它。

编辑: 这似乎只在应用程序关闭时分配值,因为在服务器上没有其他任何事情发生。为了弥补这一点,我添加了一个用于测试目的的按钮,一旦在服务器上执行了另一个命令,就会分配该值。

observeEvent(input$test,
print(value)
)

编辑: 如果我们想在后续语句中使用该值而不在服务器中执行任何其他操作,我们将不得不使用callbackR功能。

mycallback<-function(value){
if(value==T){
  print(value) #commands
} else if (value==F){
  print(value) #commands
}
}

注意:此软件包仍然相对较新,并且有很多错误,例如,如果您尝试将这些模式链接在一起,因为软件包声称此软件包可以执行此操作,则它不起作用。

shinyalert(
title = "What is your name?", type = "input",
callbackR = function(value) { shinyalert(paste("Welcome", value)) }
)

以下是作者描述的链接。 https://deanattali.com/blog/shinyalert-package/

如上所述...... https://github.com/daattali/shinyalert/issues/14 如果您从github安装最新版本,将修复许多这些错误。查看与此程序包相关的报告错误,我们并不是唯一遇到此问题的程序。