2016-04-22 71 views
0

我正在測試此處的腳本http://shiny.rstudio.com/articles/action-buttons.html(請參閱「模式1 - 命令」一節)。sendCustomMessage在actionButton中無法正常工作(Shiny)

如果在網站上按下「點擊我」按鈕,一切正常 - 我們可以看到彈出式菜單。

但是,如果要將示例腳本複製到新的.R文件並運行它 - 沒有彈出消息出現,則不會生成警告或錯誤消息(我的瀏覽器是谷歌瀏覽器)。所以我停下來了。

示例腳本:

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) 

回答

3

這應該工作,我放棄了警報彈出

1)使用標準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)使用shinyBS包和modal彈出

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

非常感謝。你幫了我很多!兩個選項都很酷! –