簡體   English   中英

Shiny將純字符串從服務器發送到ui

[英]Shiny Send plain string from server to ui

我正面臨一個可能很容易解決的問題,但卻在困擾着我。

我有一個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(輸入$ 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)

暫無
暫無

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

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