R ShinyAce:非反应性checkboxInput

R ShinyAce:非反应性checkboxInput,r,shiny,R,Shiny,我正在用ShinyAce编写一个闪亮的应用程序,以显示反应式代码。我使用的第一个示例作为代码的基础,但是我在被动checkboxInput方面有一个问题 我希望反应性地显示一些代码:例如,如果我勾选某个框,则会显示一些代码,如果取消勾选,则代码会恢复正常。这适用于actionButton(参见网站上的示例),但我不明白为什么它不适用于checkboxInput 下面是一个可复制的示例: library(shiny) library(shinyAce) init <- "first tex

我正在用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)
库(闪亮)
图书馆(新亚斯)

init这是对你的答案稍加修改的版本。我使用复选框输入的布尔结果有条件地更新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)

init我不得不将这两个
updateAceEditor
倒置,因为第二个文本显示在第一个位置,第一个文本在勾选框时显示,但除此之外,它工作得非常好,谢谢:-)(也许你应该编辑你的帖子,这样人们在不阅读评论时不会感到惊讶)我想你可以建议对答案进行修改。你能试试吗?