Я столкнулся с проблемой, которую, вероятно, тоже легко решить, но она меня беспокоит.
У меня есть скрипт глобальный.R, в котором я использую JS для вычисления высоты экрана.
jscode_for_screen_Height <- '$(document).on("shiny:connected", function(e) {
var jsHeight = screen.height;
Shiny.onInputChange("GetScreenHeight",jsHeight); });'
Эта переменная используется в нескольких частях моего сервер.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) Я не могу понять, как передать простую строку в ui.R из сервер.R
То, что я пробовал до сих пор, это использовать в сервер.R
output$ScreenHeightvalue <- paste0(input$GetScreenHeight)
А в ui.R
leafletOutput("mymap", height =(textOutput("ScreenHeightvalue")))
но не работает из-за того, что textOutput("ScreenHeightvalue") не является простой строкой.
Как передать paste0(input$GetScreenHeight) из сервер.R в ui.R в виде простой строки?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не знаю, как передать простую строку с сервера на пользовательский интерфейс, но вы можете определить свой lealfetOutput на сервере с помощью renderUI.
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)
Спасибо! Вы спасатель!
Простым способом было бы использовать renderUI() : это функция для создания объектов пользовательского интерфейса на сервере. shining.rstudio.com/reference/shiny/0.14/renderUI.html