shinyjs 没有执行observeEvent 中的所有操作

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

我有一个应用程序,当您单击

actionButton
时,它应该将输入设置为某个值;并且应通过
shinyjs
进行点击操作。然而,这只是第一件事;我不知道如何让第二个发生。或者也许它正在发生;但
reactive
对象内的数据没有更新。

这是一个最小的表示:

library(shiny)

ui <- fluidPage(
  shinyjs::useShinyjs(),
  
  selectInput("selector", label = "Carb selector", choices = unique(mtcars$carb)),
  actionButton("generate", "OK!"),
  tableOutput("results"),
  actionButton("reset", "RESET"),
  
)

server <- function(input, output, session) {
  
  data <- reactive({
    req(input$generate)
    isolate(
    mtcars %>% filter(carb == input$selector)
    )
  })
  
  output$results <- renderTable(data())

  observeEvent(input$reset, {
    
    updateSelectInput(session, 
                      inputId = "selector",
                      label = "Carb selector updated",
                      choices = unique(mtcars$carb),
                      selected = 1)
    
    shinyjs::click("generate")#This does not seem trigger when you hit reset!
    
  })
    
}

shinyApp(ui, server)
shiny shinyjs
1个回答
0
投票

它正在触发,但您在数据集中看不到它,因为您没有更改任何内容。试试这个

library(shiny)

ui <- fluidPage(
  shinyjs::useShinyjs(),
  
  selectInput("selector", label = "Carb selector", choices = unique(mtcars$carb)),
  actionButton("generate", "OK!"),
  tableOutput("results"),
  actionButton("reset", "RESET"),
  
)

server <- function(input, output, session) {
  
  data <- eventReactive(input$generate, {
    req(input$generate)
    isolate(
      mtcars %>% filter(carb == input$selector) %>% 
        dplyr::mutate(clickedtimes = input$generate)
    )
  })
  
  output$results <- renderTable(data())
  
  observeEvent(input$reset, {
    
    updateSelectInput(session, 
                      inputId = "selector",
                      label = "Carb selector updated",
                      choices = unique(mtcars$carb),
                      selected = 1)
    
    shinyjs::click("generate")#This does not seem trigger when you hit reset!
    
  })
  observe({print(input$generate)})
}

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