【发布时间】:2019-04-16 09:58:58
【问题描述】:
我正在使用 ShinyDND 包制作具有拖放功能的应用程序。我想从输入中传递一个列表作为 dragSetUI 的参数,该函数需要在 ui.R 中运行。我尝试了renderUI和uiOutput,它几乎可以工作,但是拖动的元素无法在放置区域中放置。正如您在下面的示例中看到的那样,非反应性选择就像魅力一样。我尝试创建一个反应性对象以及文本输出,但我找不到有关如何在 ui.R 中引用这些对象的文档。通常人们会在输出中将 output$x 称为“x”,但在这里,如果我在引号之间添加任何内容,它会读取为字符串。我真的被这个困住了。
library(shiny)
library(shinyDND)
nonreactive_choices<-as.list(c("a","b","c"))
ui <- shinyUI(
mainPanel(
textInput("choices","Put here a,b,c:"),
dragSetUI("drag", textval = "reactive_choices"),
dragSetUI("drag", textval = "choice_rv"),
textOutput("reactive_choices"),
dragSetUI("drag", textval = nonreactive_choices),
dropUI("drop")
)
)
server = shinyServer(function(input, output,session) {
output$reactive_choices<-reactive({
strsplit(input$choices,",")
})
observe({
chlist<-strsplit(input$choices,",")
choice_rv<-reactiveVal(chlist)
})
})
# Run the application
shinyApp(ui = ui, server = server)
【问题讨论】:
-
我认为您需要一个包含会话信息的更新功能,以便将反应选择推送到 ui。这对于许多闪亮的小部件来说很常见,但似乎不是为闪亮DND 包创建的。
-
我曾经使用 library(shinyjqui) 中的 orderInput() 实现了类似的方法。你可能想看看它。