Javascript 使用ShinyJS初始化隐藏元素
我想在一个闪亮的应用程序启动时隐藏一个元素,但与之不同的是,要隐藏的元素是一个更大的可见元素的一部分 在本例中,开始时要隐藏的元素是绘图控件,它是传单地图的一部分。有一个按钮可以切换图形控件的可见性-如何让它从隐藏图形控件开始?应用程序的完整代码如下所示Javascript 使用ShinyJS初始化隐藏元素,javascript,r,shiny,leaflet,shinyjs,Javascript,R,Shiny,Leaflet,Shinyjs,我想在一个闪亮的应用程序启动时隐藏一个元素,但与之不同的是,要隐藏的元素是一个更大的可见元素的一部分 在本例中,开始时要隐藏的元素是绘图控件,它是传单地图的一部分。有一个按钮可以切换图形控件的可见性-如何让它从隐藏图形控件开始?应用程序的完整代码如下所示 库(rbgm) 图书馆(单张) 图书馆(闪亮) 图书馆(shinyjs) ui你能做什么 shinyjs::delay(0, shinyjs::hide(selector = "div.leaflet-draw")) (没有观察员) 编辑
库(rbgm)
图书馆(单张)
图书馆(闪亮)
图书馆(shinyjs)
ui你能做什么
shinyjs::delay(0, shinyjs::hide(selector = "div.leaflet-draw"))
(没有观察员)
编辑
另一个解决方案:
js <- "
$(document).on('shiny:value', function(e){
if(e.name === 'mymap'){
setTimeout(function(){$('div.leaflet-draw').hide();}, 0);
}
});
"
ui <- fluidPage(
useShinyjs(),
tags$head(tags$script(js)),
leafletOutput("mymap"),
...
js这是有效的——直到我将它应用到我的在线数据源应用程序中——增加延迟时间是偶然的。有没有办法确保它在地图或页面加载后触发,而不考虑加载时间?@Vlad Hmmm。。。我不能这样说。你能分享一个在线数据来源的例子吗?@Vlad我刚刚编辑了我的答案,添加了另一个解决方案。您能试试这个吗?您编辑的解决方案即使延迟很长时间也能工作。
js <- "
$(document).on('shiny:value', function(e){
if(e.name === 'mymap'){
setTimeout(function(){$('div.leaflet-draw').hide();}, 0);
}
});
"
ui <- fluidPage(
useShinyjs(),
tags$head(tags$script(js)),
leafletOutput("mymap"),
...