代码之家  ›  专栏  ›  技术社区  ›  ixodid

基本问题-使程序变量反应?

  •  0
  • ixodid  · 技术社区  · 7 年前

    我有一个简单闪亮的应用程序,在主面板中显示一个问题。问题是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)
        })
    
      }
    )
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   MonikaP    7 年前

    一种方法就是让问题索引变成这样

    values <- reactiveValues(question_index=1)
    

    values$question_index
    
    推荐文章