R setInputValue更新时无法打开面板
我正在学习如何使用Shiny,但遇到了一个问题 我试图通过调用R setInputValue更新时无法打开面板,r,shiny,R,Shiny,我正在学习如何使用Shiny,但遇到了一个问题 我试图通过调用shinny.setInputValue('myEvent','open',{priority:'event'}),使ConditionalPanel打开 但是,面板没有打开。我检查了javascript事件是否被触发,因此看起来像: setInputValue未出现 UI未接收到事件 或者,事件名称不匹配 我怀疑这与反应性有关,但我被卡住了。代码如下: library(shiny) library(htmltools) libr
shinny.setInputValue('myEvent','open',{priority:'event'}),使ConditionalPanel打开代码>
但是,面板没有打开。我检查了javascript事件是否被触发,因此看起来像:
- setInputValue未出现
- UI未接收到事件
- 或者,事件名称不匹配
我怀疑这与反应性有关,但我被卡住了。代码如下:
library(shiny)
library(htmltools)
library(htmlwidgets)
library(leaflet)
library(leaflet.providers)
places = read.csv("file.csv")
names = places$Name
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
width = 3,
),
mainPanel(
width = 9,
fluidRow(column(12, leafletOutput("mymap", height = 550))),
conditionalPanel(condition = "input.myEvent == 'open'",
fluidRow(verbatimTextOutput("myEvent")))
)
)
)
server <- function(input, output) {
output$mymap <- renderLeaflet({
mapdata = places[places$Name %in% names,]
leaflet() %>%
addProviderTiles(
providers$Esri.OceanBasemap,
options = providerTileOptions(noWrap = TRUE)
) %>%
onRender("
function(el, x) {
this.on('popupopen', function(e) {
Shiny.setInputValue('myEvent', 'open', {priority: 'event'});
});
this.on('popupclose', function(e) {
Shiny.setInputValue('myEvent', 'close', {priority: 'event'});
});
}")%>%
addMarkers( data = mapdata,
lng = mapdata$Longitude,
lat = mapdata$Latitude,
layerId = mapdata$Name,
popup = mapdata$Name,
options = popupOptions(closeButton = FALSE))
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(htmltools)
库(htmlwidgets)
图书馆(单张)
图书馆(传单供应商)
places=read.csv(“file.csv”)
名称=位置$Name
ui%
添加标记(数据=地图数据,
lng=mapdata$Longitude,
lat=地图数据$纬度,
layerId=mapdata$Name,
popup=mapdata$Name,
选项=弹出选项(关闭按钮=假))
})
}
shinyApp(用户界面=用户界面,服务器=服务器)
使用创建的输入值闪亮。setInputValue
可以触发条件面板,如此基本应用程序所示:
library(shiny)
shinyApp(
ui = basicPage(
actionButton(
"x", "X", onclick = "Shiny.setInputValue('test', true);"
),
conditionalPanel(
"input.test === true",
div("Hello")
)
),
server = function(input, output){
observe(print(input[["test"]]))
}
)
应用程序中的一个问题是逐字输出(“myEvent”)
,它不呈现任何内容,因为服务器中没有输出[[“myEvent”]]
。因此,有可能条件面板可以工作(因为您的应用程序依赖于CSV文件,我们无法尝试),但此面板仍然是空的。您能否提供一个不读取CSV文件的示例?这样我们就可以试试了。你的输入在哪里?我把verbatimtexoutput()切换到h1()就可以了。所以答案是正确的。之前,面板呈现为灰色,因此我假设即使没有内容,它也会可见。