I want two different events to trigger an observer. It was suggested here that this should work. But it seems that it depends only on the second event.
obser
This should do it, note that you still have to check if the buttons were clicked as mentioned by @MrFlick
#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)
#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)
observeEvent is a wrapper for complex observe cases. In this particular case of an action when one or other reactive value changes, one could use a simple observe. This works:
require(shiny)
ui <- basicPage(
actionButton("test1", "test1"),
actionButton("test2", "test2")
)
server <- function(input, output, session){
observe( {
input$test1
input$test2
if(input$test1==0 && input$test2==0){
return()
}
print('Hello World')
})
}
shinyApp(ui, server)
There is a point in using observeEvent with options to eliminate the return() call:
ui <- basicPage(
actionButton("test1", "test1"),
actionButton("test2", "test2")
)
server <- function(input, output, session){
observeEvent(input$test1 | input$test2, { print('Hello World') } , ignoreInit = TRUE)
}
shinyApp(ui, server)