动作按钮和observeEvent

时间:2016-04-16 23:33:07

标签: r shiny

我想要一个按钮来触发对预先指定的非反应变量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)

2 个答案:

答案 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)