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"),
  ...