2016-04-22 4 views
0

Ich teste das Skript von hier http://shiny.rstudio.com/articles/action-buttons.html (siehe Abschnitt "Muster 1 - Befehl").sendCustomMessage funktioniert nicht richtig in actionButton (Shiny)

Wenn Sie den Knopf "Klicken Sie mich" auf der Website drücken, so ist alles in Ordnung - wir können das Popup-Menü sehen.

Wenn aber das Beispielskript in eine neue .R-Datei kopiert und ausgeführt werden soll - es wurde keine Popup-Meldung angezeigt, wird keine Warnung oder Fehlermeldung generiert (mein Browser ist Google Chrome). Also bin ich davon abgewimmelt.

Das Beispielskript:

library(shiny) 

ui <- fluidPage(
    tags$head(tags$script(src = "message-handler.js")), 
    actionButton("do", "Click Me") 
) 

server <- function(input, output, session) { 
    observeEvent(input$do, { 
    session$sendCustomMessage(type = 'testmessage', 
     message = 'Thank you for clicking') 
    }) 
} 

shinyApp(ui, server) 

Antwort

3

Das sollte funktionieren, habe ich zwei Beispiele von Pop-up-Benachrichtigungen

1) Mit Standard jsalert

rm(list = ls()) 
library(shiny) 
ui <- fluidPage(
    tags$head(tags$script(HTML('Shiny.addCustomMessageHandler("jsCode",function(message) {eval(message.value);});'))), 
    actionButton("do", "Click Me") 
) 
server <- function(input, output, session) { 
    observeEvent(input$do, { 
    js_string <- 'alert("Thank you for clicking");' 
    session$sendCustomMessage(type='jsCode', list(value = js_string)) 
    }) 
} 

shinyApp(ui, server) 

enter image description here

2) Mit shinyBS Paket und modal Pop-up

rm(list = ls()) 
library(shiny) 
library(shinyBS) 

ui <- fluidPage( 
    tags$script(HTML('Shiny.addCustomMessageHandler("jsCode",function(message) {eval(message.value);});')), 
    bsModal("ThankYou", "Message", "",tags$p(tags$h1("Thank you for clicking", style = "color:red", align = "center")), size = "small"), 
    actionButton("do", "Click Me") 
) 
server <- function(input, output, session) { 
    observeEvent(input$do, { 
    activate_modal <- "$('#ThankYou').modal('show')" 
    session$sendCustomMessage(type='jsCode', list(value = activate_modal)) 
    }) 
} 
shinyApp(ui, server) 

enter image description here

+1

Vielen Dank. Du hast mir sehr geholfen! Beide Optionen sind cool! –