javascript - Shiny 从服务器发送纯字符串到用户界面

标签 javascript r string shiny

我正面临一个可能很容易解决但困扰我的问题。

我有一个 global.R 脚本,我在其中使用 JS 来计算屏幕高度

jscode_for_screen_Height <- '$(document).on("shiny:connected", function(e) {
                             var jsHeight = screen.height; 
                             Shiny.onInputChange("GetScreenHeight",jsHeight); });'

这个变量在我的server.R 的几个部分中使用并且它工作正常。例如

output$viewDataCTgov <- DT::renderDataTable({
DT::datatable(data_to_render_CTgov(),
options = list(scrollX = TRUE,scrollY = paste(input$GetScreenHeight,"px",sep=""), 
scrollCollapse=TRUE,pageLength =  100,searchHighlight = TRUE), escape = FALSE)
})

现在我正在创建一张传单 map ,在 ui.R 中我有

 leafletOutput("mymap", height = XXX )

leafletoutput 接受一个字符串作为高度参数(例如“400”)

这里的问题:

1) 我无法使用 input$GetScreenHeight,因为我在 ui.R 上并且输入不在脚本的范围内。

2) 我不知道如何将纯字符串从 server.R

传递到 ui.R

到目前为止我尝试的是在server.R

中使用
output$ScreenHeightvalue <- paste0(input$GetScreenHeight)

并且在ui.R

leafletOutput("mymap", height =(textOutput("ScreenHeightvalue")))

但由于 textOutput("ScreenHeightvalue") 不是纯字符串而无法正常工作。

如何将 paste0(input$GetScreenHeight) 作为纯字符串从 server.R 传递到 ui.R

最佳答案

我不知道如何将纯字符串从服务器传递到 ui,但您可以使用 renderUI 在服务器中定义 lealfetOutput

library(shiny)
library(leaflet)

ui <- fluidPage(
  uiOutput("test")
)

server <- function(input, output) {
  output$myMap <- renderLeaflet({
    leaflet() %>%
      addTiles() %>%
      setView(-93.65, 42.0285, zoom = 17)
  })

  output$test <- renderUI({
    tagList(
      leafletOutput("myMap", height = paste0(input$GetScreenHeight))
    )
  })
}
shinyApp(ui, server)

关于javascript - Shiny 从服务器发送纯字符串到用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56645805/

相关文章:

c++ - R 和 C++ 中的随机数

android - 将字符串数组转换为字符串

python - 返回 Python 字符串中第一个非空白字符的最低索引

javascript - 如何将 hsl 颜色值赋予 svg 元素

javascript - 为什么谷歌控制台报告 <td> 的意外像素大小

r - 在不读取 R 中的整个数据的情况下获取 xlsx 表的第一行和第一列

python - 在文本文件中搜索多个字符串并将结果打印到新的文本文件中

javascript - window.pageYOffset 在 iOS7 中不起作用

javascript - 如何使用 Angular 5 中的异步更新输入变化时的数组?

r - Windows 下 R 图形中的抗锯齿(根据 Mac)