r - 基本的闪亮问题 - 使程序变量反应?
问题描述
我有一个简单的 Shiny 应用程序,它在主面板中显示一个问题。问题只是 10、20 或 30。
“正确”或“错误”的结果显示在 R 控制台中。
然后,您可以单击 ActionButton,“Next”转到下一个问题,该问题应显示在 mainPanel 中。目前,未显示问题,但索引正在工作。
我不清楚如何显示第二个问题。我相信我需要将“问题”或“问题索引”设为反应变量??没有把握。
另外,我正在为 question_index 使用全局变量,我认为这是错误的形式。同样,不确定替代方案是什么。
js <- '
$(document).on("keyup", function(e) {
if(e.keyCode == 13){
Shiny.onInputChange("keyPressed", Math.random());
}
});
'
shinyApp(
ui = fluidPage(
tags$script(js),
sidebarLayout(
sidebarPanel(
textInput("answer",
width = "50px",
label = "Answer"),
actionButton(
inputId = "next_question",
label = "Next"
)
),
mainPanel(
textOutput("equation")
)
)
),
server = function(input, output, session){
questions <- c("10", "20", "30")
question_index <<- 1
Answer <- reactiveVal()
observeEvent(input$keyPressed, {
Answer(input$answer)
if (input$answer == questions[question_index]) {
print("Right")
} else {
print("Wrong")
}
})
output$equation <- renderText({
# Answer()
questions[question_index]
})
observeEvent(input$next_question, {
question_index <<- question_index + 1
print(question_index)
})
}
)
解决方案
一种方法确实是让问题索引像这样反应
values <- reactiveValues(question_index=1)
然后将其称为
values$question_index
推荐阅读
- d3.js - D3 svg 文本位置正确
- python - Odoo 11 - 使用 windows cmd 更新模块
- sockets - 尝试连接时 UWP 套接字客户端异常:ThrowForNonSuccess(任务任务)
- amazon-redshift - 哪些选项会将转义字符加载到 Redshift 中?
- java - Android 多播地址已在使用中
- sql - 如何计算表中字符串的唯一出现次数以获取顶点 5 中的单独记录
- vba - 在 SAP 中循环遍历表会返回错误
- javascript - Photoshop Javascript 列出图层
- vb.net - DataGridView Last Row 不提交
- c++ - 衰减为指针和 noexcept 规范的 Lambda