如何在完成多个输入选择之前(在按回车键之前)停止 Rshiny 刷新数据

问题描述 投票:0回答:1

我在 Rshiny 中有 1 个输入需要多个输入:

selectInput("selected_herd", "选择畜群", selected = herds_list1, Choices = herds_list, multiple = TRUE)

在应用程序中,当我添加多个牛群时,应用程序会在我按 Enter 之前刷新数据。有办法阻止这一切吗?并让应用程序仅在我完成输入列表并按 Enter 键后刷新数据?在所附的照片中,您可以看到我即将开始输入牛群列表,但应用程序已经刷新空列表上的数据并显示错误。我想要的是应用程序显示先前选择的结果(照片 2),直到我完成新选择并按 Enter 键。 有人知道该怎么做吗?非常感谢!!! enter image description here

enter image description here

r shiny r-shinylive
1个回答
0
投票

Shiny 中的传统方法是添加一个按钮(或任何类似的小部件),必须单击该按钮才能应用输入。在服务器端,您可以使用

bindEvent()
将相应的反应绑定到事件(例如按下按钮)。这意味着只有在事件触发后才能计算反应式表达式。

由于您没有共享任何代码,因此我创建了一个简单的虚拟示例。请注意,

bindEvent()
可与任何类型的事件一起使用,而不仅仅是按钮。

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      fluidPage(
        selectInput(
          "select",
          label = "Select Herd",
          choices = c("BBBJ", "BBBX", "BBFC", "BBFD", "BBFG"),
          multiple = TRUE
        ),
        actionButton("go", "Apply changes")
      )
    ),
    
    mainPanel(
      uiOutput("result")
    )
  )
)


server <- function(input, output) {
  result <- reactive({
    lst <- lapply(input$select, tags$li)
    paste("Selected:<br>", do.call(tags$ul, lst))
  })
  
  output$result <- renderUI({
    HTML(result())
  }) %>%
    bindEvent(input$go)
}

runApp(shinyApp(ui, server))
© www.soinside.com 2019 - 2024. All rights reserved.