我正面临一个可能很容易解决但困扰我的问题。
我有一个 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/