簡體   English   中英

在閃亮的R中使用觀察功能

[英]Using observe function in shiny R

每當嘗試更改時,我都試圖將JavaScript變量的值從ui.R發送到Server.R 用戶單擊鏈接時,將警告其href值。 到這里為止一切正常。 鏈接的形式

<a href="something.com" onclick=\"clickFunction(this.href); return false;\" target=\"_blank\">Sample link </a>

現在,href值存儲在ui.R中的變量link中。 我正在使用Shiny.onInputChange函數將鏈接的值發送到server.R

但是server.R中的觀察功能沒有給我任何價值。 請告訴我如何通過使用觀察功能或其他任何可能的方式來執行此操作。

用戶界面

library(shiny)
shinyUI(fluidPage(

  tags$script(HTML("
                      function clickFunction(link){
                          alert(link); 
                          Shiny.onInputChange(\"linkClicked\",link);   
                      }
                     "))

//rest of the code which is not related

)

服務器

library(shiny)

shinyServer(function(input, output) {

  observe({
    input$linkClicked
    print(input$linkClicked)
  })
})

由於您沒有提供足夠的代碼(例如:“ UI中的變量”是什么意思?),我不太真正理解鏈接的來源以及應用程序的外觀。 但是,這是一個小示例,顯示了javascript如何將信息成功發送到服務器。 我正在使用Shinyjs包,這是我寫的一個包。

library(shinyjs)
jscode <- "
shinyjs.clickfunc = function(link) {
  alert(link);  
  Shiny.onInputChange('linkClicked', link);
}"

runApp(shinyApp(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode),
    textInput("link", ""),
    actionButton("btn", "submit")
  ),
  server = function(input, output, session) {
    observeEvent(input$btn, {
      js$clickfunc(input$link)
    })
    observe({
      input$linkClicked
      print(input$linkClicked)
    })
  }
))

編輯

如果我正確理解鏈接的生成方式,則可以正常工作

runApp(shinyApp(
  ui = fluidPage(
    tags$script(HTML("
                      function clickFunction(link){
                          alert(link); 
                          Shiny.onInputChange('linkClicked',link);   
                      }
                     ")),
    tags$a(href="www.google.com", onclick="clickFunction('rstudio.org'); return false;", "click me")
  ),
  server = function(input, output, session) {
    observe({
      input$linkClicked
      print(input$linkClicked)
    })
  }
))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM