【问题标题】:Shiny Send plain string from server to uiShiny 将纯字符串从服务器发送到 ui
【发布时间】:2019-06-18 18:14:59
【问题描述】:

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

我有一个 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)
})

现在我正在创建一张传单地图,并且在 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 作为纯字符串?

【问题讨论】:

标签: javascript r string shiny


【解决方案1】:

我不知道如何将纯字符串从服务器传递到 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)

【讨论】:

  • 谢谢!你是救命稻草!
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 2017-08-03
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
相关资源
最近更新 更多