我正在用ShinyAce编写Shiny应用程序,以显示响应代码。我使用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)
答案 0 :(得分:1)
这是您答案的稍作修改的版本。我正在使用复选框输入的布尔结果有条件地更新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)