【问题标题】:How to capture shinyalert input field as variable如何将闪亮警报输入字段捕获为变量
【发布时间】:2017-12-21 02:41:58
【问题描述】:

我正在尝试使用相对较新的 shinyAlert 包来查看它是否提供比 sweetalert 包更好的结果,但我无法弄清楚如何得到这个:

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)

感谢各位天才的帮助。

【问题讨论】:

    标签: r shiny shinyjs


    【解决方案1】:

    这是你的做法:

    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)

    【讨论】:

    • 很公平,但这不会将值保存到变量中......如果您需要以shinyalert的输出为条件怎么办?例如,我需要它返回一个布尔变量 - 我如何将它存储到一个变量中?
    • shinyalert 的文档显示了一种方法,shinyalert 自动将响应保存在 input$shinyalert 中。或者您可以将我的答案中的代码与reactiveVal() 变量一起使用。
    • 只想对您为此付出的辛勤工作表示感谢,Dean。真的很感激。
    【解决方案2】:

    我没有使用 Shinyalert 包的经验,但是您可以使用来自 shiny 的广泛使用且记录良好的模态对话框来实现您想要的。也许你有理由坚持使用我不知道的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)
    

    如果这有帮助,请告诉我!

    【讨论】:

    • 没有测试是的,这可能有效,但不是我想要的。原因之一是因为我的应用程序已经使用了几十个甜蜜/闪亮的警报,我想坚持同样的风格
    • 好吧,听起来很合理。我希望其他对 shinyalert 包有更多经验的人可以帮助你。
    • 我查看了 github 存储库 github.com/daattali/shinyalert/blob/master/inst/www/srcjs/… 但我不确定如何找出回调函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2022-11-29
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    相关资源
    最近更新 更多