在observeEvent中闪亮的无声验证?

时间:2017-01-12 18:11:02

标签: r shiny

我正在尝试在我的闪亮应用的validate部分中使用observeEvent语句,但是当条件不满足时,不会返回错误消息。它只是一个空白屏幕。这是一个可重复的例子:

require(shiny)
runApp(
  list(
    ui = pageWithSidebar(
      headerPanel("test"),
      sidebarPanel(
        p("Demo Page."),
        sliderInput("sldr", "Select a value", min = 0, max = 10, value = 5),
        actionButton("btn", "Push Me!")
      ),
      mainPanel(
        verbatimTextOutput("text")
      )
    ),
    server = function(input, output){

      observeEvent(input$btn, {

        validate(
          need(input$sldr > 5, "Require > 5")
        )

        output$text <- renderText({
          "hello world"
        })
      })
    }
  )
)

现在,当我启动应用程序并按下Push Me!操作按钮时根本没有任何事情发生(validate正在停止处理)但没有返回错误消息,只是一个白色屏幕。如果我将所选值更改为6,则会继续并打印该消息。

为什么validate没有显示?

1 个答案:

答案 0 :(得分:1)

我猜是因为observeEvent没有将消息发送到的地方。将打印内部的打印按照您希望的方式进行操作,对我来说更有意义。

但它可能并不完全是你需要的。例如,不确定整个observeEvent命令是否已终止。

require(shiny)
runApp(
  list(
    ui = pageWithSidebar(
      headerPanel("test"),
      sidebarPanel(
        p("Demo Page."),
        sliderInput("sldr","Select a value",min = 0,max = 10,value = 5),
        actionButton("btn","Push Me!")
      ),
      mainPanel(
        verbatimTextOutput("text")
      )
    ),
    server = function(input,output) {

      observeEvent(input$btn,{

        output$text <- renderText({
          validate(
            need(input$sldr > 5,"Require > 5")
          )
          "hello world"
        })
      })
    }
  )
)

产量:

enter image description here