Я использую пакет data.tree
в блестящем приложении и хотел бы зафиксировать изменения объекта, используя shiny::observeEvent()
. Однако, похоже, что эти изменения не вызывают события обычным способом. Пожалуйста, посмотрите следующий пример:
library(shiny)
library(data.tree)
data("acme")
app <- shinyApp(
ui = shinyUI(
fluidPage(
actionButton("tree_add", "Add")
)
),
server = shinyServer(function(input, output) {
rv <- reactiveValues(
tree = acme,
list = list(a = c(1,2), b = c(2,4))
)
observeEvent(input$tree_add, {
rv$tree$AddChild(as.character(round(runif(1, 1, 1000))))
rv$list <- c(rv$list, "z" = c(2,42))
})
observeEvent(rv$tree, {
print("thing added to TREE")
})
observeEvent(rv$list, {
print("thing added to LIST")
})
}
))
Кнопка действия изменяет как объект data.tree
, так и обычный список. В то время как observeEvent(rv$list)
реагирует, как и ожидалось, прослушиватель для дерева данных хранит молчание. Я также пытался прослушать rv$tree$totalCount
, но, опять же, ни одно событие не вызывается. Я бы предположил, что это может быть проблемой и с другими R6
объектами (?).
Короче говоря: Как я могу наблюдать изменения в R6
объектов / data.tree
с блестящими (желательно сохраненными)как reactiveValues()
? Спасибо!