我有一个简单闪亮的应用程序,在主面板中显示一个问题。问题是10、20或30。
在R控制台中显示“正确”或“错误”的结果。
然后,您可以单击操作按钮“下一步”转到下一个问题,该问题应显示在主面板中。当前,问题未显示,但索引正在工作。
我不清楚如何让第二个问题显示出来。我认为我需要把“问题”或“问题指数”作为一个反应变量??不确定。
另外,我使用了一个全局变量作为问题索引,我认为这是一个糟糕的形式。再说一次,我不确定还有什么选择。
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)
})
}
)