如何定义一个调用闪亮函数的函数?

时间:2017-10-20 13:08:45

标签: r shiny

我想定义一个函数,它使用反应输入作为参数调用闪亮函数。对于这个例子:

library(shiny)

ui <- fluidPage(
    actionButton("do", "Click Me")
)

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

    clickFunction<-function(x){
        observeEvent(x, {print("got it")})
    }

    clickFunction(x = input$do)
}

shinyApp(ui, server)

我希望

  

[1]“得到了它”

当我点击“Click Me”按钮时,却没有输出。

如何让observeEvent观察无功输入?

我认为这可能取决于observeEvent的环境参数,但我没有经验使用它们。

感谢andvance。

1 个答案:

答案 0 :(得分:0)

您需要使用反应式包装器传递input$do。您的示例编码方式,input$do将在调用函数时进行一次评估。

library(shiny)

clickFunction <- function(x){
  observeEvent(x(), {print("got it")})
}

shinyApp(
  fluidPage(actionButton("do", "Click Me")),
  function(input, output, session){      
    clickFunction(reactive({input$do}))
  }
)

另一种方式是引用您的事件表达式,但input必须在clickFunction范围内

library(shiny)

shinyApp(
  fluidPage(actionButton("do", "Click Me")),
  function(input, output, session){
    clickFunction <- function(x){
      observeEvent(x, {print("got it")}, event.quoted = TRUE)
    }

    clickFunction(x = quote(input$do))
  }
)
相关问题