Я пишу приложение Shiny с ShinyAce, чтобы отображать реактивный код. Я использовал первый пример https://trestletech.github.io/shinyAce/ в качестве основы для своего кода, но у меня есть проблема с реактивным checkboxInput.
Я хотел бы реактивно отображать некоторый код: например, если я отмечаю поле, появляется какой-то код, и если я не отмечаю его, код возвращается к нормальному состоянию. Это работает с actionButton (см. пример на веб-сайте), но я не могу понять, почему это не работает с checkboxInput.
Вот воспроизводимый пример:
library(shiny)
library(shinyAce)
init <- "first text"
ui <- shinyUI(
pageWithSidebar(
headerPanel(""),
sidebarPanel(
actionButton("reset", "Reset"),
checkboxInput("test", "Test", FALSE)
),
mainPanel(
aceEditor(
outputId = "ace",
selectionId = init
)
)
)
)
server <- shinyServer(function(input, output, session) {
observe({
cat(input$ace, "\n")
})
observeEvent(input$reset, {
updateAceEditor(session, "ace", value = init)
})
observeEvent(input$test, {
updateAceEditor(session, "ace", value = "Second text")
})
})
shinyApp(ui = ui, server = server)





Это немного измененная версия вашего ответа. Я использую логический результат ввода флажка для условного обновления редактора Ace.
init <- "first text"
ui <- shinyUI(
pageWithSidebar(
headerPanel(""),
sidebarPanel(
actionButton("reset", "Reset"),
checkboxInput("test", "Test", FALSE)
),
mainPanel(
aceEditor(
outputId = "ace",
value = init
)
)
)
)
server <- shinyServer(function(input, output, session) {
observe({
cat(input$ace, "\n")
print(input$test)
})
observe({
if (input$test){
updateAceEditor(session, "ace", value = "Second text")
} else {
updateAceEditor(session, "ace", value = init)
}})
observeEvent(input$reset, {
updateAceEditor(session, "ace", value = init)
})
})
shinyApp(ui = ui, server = server)
Я думаю, вы можете предложить изменить ответ. Не могли бы вы попробовать это?
Мне просто пришлось инвертировать два
updateAceEditor, потому что второй текст отображался первым, а первый текст, когда флажок установлен, но за исключением этого, он отлично работает, спасибо :-) (возможно, вам следует отредактировать свой пост, чтобы люди не удивлюсь, если они не читают комментарии)