Shiny 在运行时为克隆的elments创建R绑定?
我正在使用R的Shiny 在运行时为克隆的elments创建R绑定?,shiny,reactive,sortablejs,Shiny,Reactive,Sortablejs,我正在使用R的sortable包创建一个拖放式报表生成器(用户可以在其中将各种工具拖动到报表中)。我的问题是,任何给定的工具都可能被多次使用。因此,我使用sortable的克隆功能在将该工具放入报告时克隆它 挑战在于克隆的元素与原始元素具有相同的id(它只是由SortableJS创建的元素的精确副本)。不用说,这会弄乱工具中的任何被动元素,并且不会创建到新元素的任何唯一绑定 我可以在onClone事件中使用javascript更改id。但是我不知道如何创建新id的新的闪亮的反应性绑定。一种选择是
sortable
包创建一个拖放式报表生成器(用户可以在其中将各种工具拖动到报表中)。我的问题是,任何给定的工具都可能被多次使用。因此,我使用sortable的克隆功能在将该工具放入报告时克隆它
挑战在于克隆的元素与原始元素具有相同的id(它只是由SortableJS创建的元素的精确副本)。不用说,这会弄乱工具中的任何被动元素,并且不会创建到新元素的任何唯一绑定
我可以在onClone事件中使用javascript更改id。但是我不知道如何创建新id的新的闪亮的反应性绑定。一种选择是在启动时创建一组虚拟绑定(“output1”、“output2”、“output3”等),然后当这些id由于克隆而出现在DOM中时(随后在onClone事件中更改id名称),事情应该会自行解决。但这似乎是一个黑客。是否有其他方法可以完全在运行时执行此操作而不使用虚拟绑定
以下是雷普雷克斯的情况:
library(shiny)
library(sortable)
ui <- fluidPage(
tags$div(HTML("<h3>Drag widget from here:</h3>"),
tags$div(
id = "toolbox",
tags$div(
textInput("something", label = "Enter something:"),
textOutput("out")
)
)
),
tags$div(HTML("<h3>To Below Here:</h3>"),
tags$div(
id = "workspace"
)
),
sortable_js(
"toolbox",
options = sortable_options(
group = list(
pull = "clone",
put = FALSE,
name = "draggable_tools"
)
)
),
sortable_js(
"workspace",
options = sortable_options(
group = list(
name = "draggable_tools"
)
)
)
)
server <- function(input, output) {
output$out <- renderText({
paste("You entered: ", input$something)
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(可分类)
用户界面