这是示例代码:
library("shiny")
createObserver <- function(id) {
observeEvent(input[[id]], {
message(paste("button", id, "pushed"))
})
}
ui <- actionButton("foo", "bar")
server <- function(input, output) {
createObserver("foo")
}
shinyApp(ui = ui, server = server)
此代码抱怨Warning: Error in observeEventExpr: object 'input' not found
。从理论上讲,我可以将input
变量作为函数参数传递(我现在打算做的事情),但是要与函数参数(input
,output
,session
混为一谈感觉真的很乱。
除了将所有这些运行时变量作为参数传递给此类构建器函数之外,还有其他方法吗?
处理闪亮的生成器功能时的最佳做法是什么?
编辑:
我想我真的必须将输入,输出和任何潜在的reactValue对象传递给函数。
答案 0 :(得分:1)
我认为一团糟正在使用 input 在服务器外,请尝试以下操作:
library("shiny")
ui <- actionButton("foo", "bar")
server <- function(input, output) {
createObserver <- function(id) {
observeEvent(input[[id]], {
message(paste("button", id, "pushed"))
})
}
createObserver("foo")
}
shinyApp(ui = ui, server = server)
这里的线索是将您的函数放入服务器中。 希望对您有帮助