如何使用代码使反应观察者无效?

时间:2015-10-28 03:40:33

标签: shiny

给出类似pseduo的代码:

dateRange <- reactive({
    input$select_dates #action button

    save_selected_date_range()
    isolate(input$dateRange)
})


customerId <- reactive({
    #check if customer has saved date range if so trigger
    saved_info <- saved_preferences(input$customerId)
    if(nrow(saved_info) > 0) {
      flog.info(saved_info)
      updateDateRangeInput(session, "dateRange", start = saved_info$start, end = saved_info$start)
    }

    input$customerId
})

情景:

输入 选定的日期范围和客户选择器。按下操作按钮时会注册日期范围。

所需行动 我们希望能够在挑选客户时加载已保存的日期范围。

问题: 如何触发输入$ select_dates,就像按下操作按钮一样?没有计时器的invalidateLater之类的东西会很好。或者,如果有手动方式将输入$ select_dates标记或标记为无效。

1 个答案:

答案 0 :(得分:6)

定义无效值

rv <- reactiveValues( v = 0)

把它放在你的反应表达中

dateRange <- reactive({
    rv$v
    input$select_dates #action button

    save_selected_date_range()
    isolate(input$dateRange)
})

只需在代码的任何部分更改rv$v(如rv$v <- rv$v + 1)的值,dateRage表达式就会失效。