Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shiny 在运行时为克隆的elments创建R绑定?_Shiny_Reactive_Sortablejs - Fatal编程技术网

Shiny 在运行时为克隆的elments创建R绑定?

Shiny 在运行时为克隆的elments创建R绑定?,shiny,reactive,sortablejs,Shiny,Reactive,Sortablejs,我正在使用R的sortable包创建一个拖放式报表生成器(用户可以在其中将各种工具拖动到报表中)。我的问题是,任何给定的工具都可能被多次使用。因此,我使用sortable的克隆功能在将该工具放入报告时克隆它 挑战在于克隆的元素与原始元素具有相同的id(它只是由SortableJS创建的元素的精确副本)。不用说,这会弄乱工具中的任何被动元素,并且不会创建到新元素的任何唯一绑定 我可以在onClone事件中使用javascript更改id。但是我不知道如何创建新id的新的闪亮的反应性绑定。一种选择是

我正在使用R的
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)

库(闪亮)
图书馆(可分类)
用户界面