2017-02-25 115 views
1

我想通过点击动作按钮的一些Youtube嵌入式链接,但无法做到这一点,我已经尝试了下面附加的一些代码,我尝试从服务器传递链接到UI,可有一个人帮我找到以下问题的解决方案:R闪亮 - 传递Youtube链接到iframe

这里有一些假的码:

ui.r

library(shiny) 
library(shinyLP) 

shinyUI(fluidPage(
     titlePanel("Title"), 
     sidebarLayout(
     sidebarPanel(
      actionButton("analyse1","Link 1"), 
      actionButton("analyse2","Link 2"), 
      iframe(width = "250", height = "150",url_link =s5)), #s5 in server.r are reactive youtube links 
     mainPanel(
textOuput("textOut") 
     )) 
    )) 

server.r

shinyServer(
    function(input,output,session){ 

    terms1<-reactiveValues(dta = NULL) 

    observeEvent(input$analyse1,{withProgress({ 
     setProgress(message = "Please Wait...") 
     terms1$dta<-"Video 1" 
     s5<-"https://www.youtube.com/embed/XQTAD9P5A1U"})}) 

    observeEvent(input$analyse2,{withProgress({ 
     setProgress(message = "Please Wait...") 
     terms1$dta<-"Video 2" 
     s5<-"https://www.youtube.com/embed/em1u7iO9D1k"})}) 

output$textOut<-renderText({ 
    (terms1$dta) 
}) 

    } 
) 

回答

2

您需要从服务器呈现html。这可以使用服务器中的renderUI和ui中的htmlOutput完成。

这个简单的应用程序可以帮助你开始:

shinyApp(
    ui = fluidPage(titlePanel("Title"), 
       mainPanel(htmlOutput("video"))), 
    server = function(input, output, session) { 
    output$video <- renderUI({ 
     tags$iframe(src = "https://www.youtube.com/embed/XQTAD9P5A1U") 
    }) 
    } 
) 

而且,在这里它与操作按钮:

ui <- fluidPage(titlePanel("Title"), 
       sidebarLayout(
        sidebarPanel(
        actionButton("analyse1", "Link 1"), 
        actionButton("analyse2", "Link 2") 
       ), 
        mainPanel(htmlOutput("video")) 
       )) 


server <- function(input, output, session) { 
    terms1 <- reactiveValues(link = NULL) 

    observeEvent(input$analyse1, { 
    terms1$link <- "https://www.youtube.com/embed/XQTAD9P5A1U" 
    }) 

    observeEvent(input$analyse2, { 
    terms1$link <- "https://www.youtube.com/embed/em1u7iO9D1k" 
    }) 

    output$video <- renderUI({ 
    tags$iframe(src = terms1$link, width = 600, height = 400) 
    }) 
} 
shinyApp(ui = ui, server = server) 
+0

感谢@NBATrends完美的,我会在我的代码包含这些。 –