本文介绍了如何侦听闪亮的serveEvent中的多个事件表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望两个不同的事件触发观察者。有人建议here这应该是可行的。但似乎只取决于第二个事件。

observeEvent({ 
  input$spec_button
  mainplot.click$click
}, { ... } )

看一下示例。

ui <- shinyUI(bootstrapPage(
    actionButton("test1", "test1"),
    actionButton("test2", "test2"))
)

server <- shinyServer(function(input, output) {
    observeEvent({
        input$test1
        input$test2
    }, {
        print('Hello World')
    })
})

shinyApp(ui, server)

单击按钮test1后,不会有任何反应。如果您单击按钮test2,它将打印到您的控制台。一旦按下test2按钮,单击test1将打印消息。那是一种奇怪的行为。

that链接中的另一个建议是使用

list(input$test1, input$test2)

即使不单击按钮也会打印消息。

推荐答案

应该可以了,请注意,您仍然需要检查是否按@Mr Flick提到的那样单击了按钮

1.可以使用反应式

#rm(list = ls())
library(shiny)
ui <- shinyUI(bootstrapPage(
  actionButton("test1", "test1"),
  actionButton("test2", "test2"))
)

server <- shinyServer(function(input, output) {

  toListen <- reactive({
    list(input$test1,input$test2)
  })
  observeEvent(toListen(), {
    if(input$test1==0 && input$test2==0){
      return()
    }
    print('Hello World')
  })
})

shinyApp(ui, server)

2.根据@Mr Flick举的例子(现已删除)

#rm(list = ls())
library(shiny)
ui <- shinyUI(bootstrapPage(
  actionButton("test1", "test1"),
  actionButton("test2", "test2"))
)

server <- shinyServer(function(input, output) {

  observeEvent(input$test1 | input$test2, {
    if(input$test1==0 && input$test2==0){
      return()
    }
    print('Hello World')
  })
})

shinyApp(ui, server)

这篇关于如何侦听闪亮的serveEvent中的多个事件表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 20:58