如果其他输入更改了值,则禁止反跳

时间:2019-09-17 14:07:37

标签: r shiny

在我的R-Shiny应用程序中,我想生成一些图,具体取决于两个参数(复选框和numericInput)。复选框的值更改时,应该更改numericInput的值。将去抖用于numericInput。

这导致以下问题: 更改复选框的值会触发绘图重新计算,还会更改numericInput的值。因此,将触发去抖动,并在去抖动后再次触发重新计算。

如果数字输入的值自动更改,是否有办法防止反跳触发蜂鸣?

在下面的最小示例中,我用一个简单的textoutput替换了该图。 (取消)标记该复选框,文本会更改两次。我想抑制输入$截断更改时的反跳,因为输入$相对更改。

library(shiny)

ui <- fluidPage(

  sidebarLayout(
    sidebarPanel(
      uiOutput("numeric"),
      checkboxInput("relative", "Relative", value = FALSE)
    ),
    mainPanel(
      textOutput('text')
    )
  )
)

server <- function(input, output) {

  output$numeric <- renderUI({
    if(input$relative){
      value <- 100
    }
    else{
      value <- 10000
    }
    isolate(numericInput("truncate",
                         "Truncate at (Units/%)", value = value))
  })

  truncate_debounce <- reactive({
    input$truncate  
  })

  truncate_debounced <- debounce(truncate_debounce, 1500)

  observe({
    output$text <- renderText({
      paste(truncate_debounced(), input$relative)
    })
  })

}

shinyApp(ui = ui, server = server)

0 个答案:

没有答案