r - R ShinyAce:非反应性复选框输入
问题描述
我正在用 ShinyAce 编写一个闪亮的应用程序以显示反应代码。我使用https://trestletech.github.io/shinyAce/的第一个示例作为我的代码的基础,但我遇到了关于反应式复选框输入的问题。
我想反应性地显示一些代码:例如,如果我勾选一个框,则会出现一些代码,如果我取消勾选它,代码就会恢复正常。这适用于 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)
推荐阅读
- javascript - 如何创建函数以在 1 秒后执行另一个函数多次
- css - 如何处理在 bs4 中溢出容器的按钮?
- java - 在 HttpSession 中调用 setAttribute() 时遇到 java.lang.IllegalStateException: null
- c++ - While 循环不检查或条件
- azure-devops - 如何指定在 Mono-Repo 中为 azure-pipelines.yml 构建包的路径?
- python - 导入 seaborn 时出错(matplotlib 参数无效)
- php - 删除电话号码的第一个字符并将它们替换为 PHP subsstr 中的零
- python - 当类从 cv2.KeyPoint 继承时,一个错误会导致崩溃
- php - 如何通过php正确显示目录和子目录中的所有文件
- sql - 将oracle sql转换为hana sql