在下面的shiny
应用程序中,我有一个重置按钮,它可以重置shinyTree
. 我发现按下reset后对应的input$tree
并没有更新,即input$tree
仍然反映了un-reset状态。通过移动一些节点来尝试应用程序并按下重置按钮,您会看到,当输出被重置时,verbatimTextOutput
仍然显示旧版本。
这种行为是故意的吗?如何强制shinyTree
更新input$tree
时output$tree
已更改?#89 能解决我的问题吗?
library(shiny)
library(shinyTree)
ui <- fluidPage(actionButton("reset", "reset"),
shinyTree("tree", dragAndDrop=TRUE, sort = F, wholerow = T, unique = T),
verbatimTextOutput("str"))
server <- function(input, output, session) {
output$tree <- renderTree({
input$reset
list(
root3 = "234",
root1 = list(
SubListA = list(leaf1 = "", leaf2 = "")
),
root2 = list(
SubListA = list(leaf1 = "", leaf2 = "")
)
)
})
output$str <- renderPrint({
# shinyTrees will also be available as inputs so you can
# monitor changes that occur to the tree as the user interacts
# with it.
str(input$tree)
})
}
shinyApp(ui, server)
澄清一下:我在发布这个问题之前已经阅读了R Shiny - Resetting shinyTree node selections,虽然相关,但它并没有解决我的问题,因为我一开始没有使用updateTree
,而且在我的实际用例中事情要复杂得多。因此,使用附加的突出显示的解决方案reactiveVal
将无法顺利运行。
我真的需要一个解决方案来确保它input$tree
是最新的,无论树是通过用户交互还是通过R
代码本身更新的。
我对闪亮的输入小部件只有肤浅的了解,但我想#89可以解决我的问题,因为shiny
只要有refresh
. 我会试试这个。