我想要一个按钮来触发对预先指定的非反应变量x
的操作。每次按下按钮x <- x + 1
都将被执行。要检查是否正确完成,应显示结果。
为此,我尝试了observeEvent()
。但它正在做它应该只做一次的事情。它是如何正常工作的?
似乎rv
仅在observeEvent()
函数中可用。如果output$text_2 <- renderText({ rv$a })
位于observeEvent()
之外,则会发生错误。如何在observeEvent()
之外使用完成的内容?
library(shiny)
x <- 0
ui <- fluidPage(
actionButton(inputId = "action",
label = "action"),
textOutput("text_1"),
textOutput("text_2")
)
server <- function(input, output) {
output$text_1<- renderText({ input$action })
observeEvent(input$action, {
x <- x + 1
rv <- reactiveValues(a = x)
output$text_2 <- renderText({ rv$a })
})
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
Daattalis回答是现场,但我想我可以发布一些关于如何使用Shinys反应值来做这个的例子。
$("#minpass").kendoDropDownList({
dataTextField: "text",
dataValueField: "value"
});
希望这有帮助!
答案 1 :(得分:1)
截至2017年,使用reactiveVal
可以更轻松,更好地完成此操作:
library(shiny)
ui <- fluidPage(
actionButton("go", "Click me"),
helpText("All values in the table below are incremented ",
"each time you press the button"),
verbatimTextOutput("tbl")
)
server <- function(input, output, session) {
x <- reactiveVal(1)
observeEvent(input$go, {
x(x() + 1)
})
output$tbl <- renderPrint({
x()
})
}
shinyApp(ui, server)