R Shiny shinyjqui不适用于动态服务器UI

时间:2018-06-16 15:36:27

标签: jquery r shiny

我正在使用 shinyjqui 包,并认为以下代码应该创建可拖动的UI /图。但是,使用添加UI 按钮添加2个以上的绘图后,返回的对象将无法拖动。然而,当我使整个输出 main_output 可拖动时,我可以使它工作,但这不是我想要的。

有什么建议吗?

下面的最小例子:

{{1}}

1 个答案:

答案 0 :(得分:0)

用于多个元素的选择器应采用"#id1,#id2"的格式,但不能采用"#id1,#id2,"的格式,因此jqui_draggabled的表达式应更改为jqui_draggabled(paste0('#', output_types, sep='', collapse = ','))

为使动态UI的逻辑更加清晰,我建议在此处使用shiny::insertUI

observeEvent(input$add, {    
  plot_type <- as.character(input$select)    
  input_types <- render_moduels$input_types    
  if (plot_type %in% input_types) return()
  render_moduels$input_types <- c(input_types, plot_type)
  insertUI(
    selector = "#moduel_box",
    where    = "beforeBegin",
    ui       = jqui_draggabled(uiOutput(plot_type))
  )
})

顺便说一句,box函数来自shinydashboard包,您应该在开始时加载它。