在选择输入选项时,将正确返回所有内容。但是,如果在选择所有过滤器后更改了上一个过滤器,它将重置下一个输入。这是一个example
的gif图像。观看gif后,我将返回到上一个输入以对其进行更改,然后重置下一个。那就是我不想发生的事情。
这是我正在使用的一些基本示例代码,因此您可以重现它:
[
{"equipament":"pir1","watts":48.0,"currentdate":"2020-02-06T21:11:55"},
{"equipament":"pir2","watts":16.0,"currentdate":"2020-02-06T21:11:55"},
{"equipament":"pir1","watts":3.0,"currentdate":"2020-02-06T21:16:52"},
{"equipament":"pir2","watts":12.0,"currentdate":"2020-02-06T21:16:52"}
]
答案 0 :(得分:1)
首先,这是问题的简化示例:
library(shiny)
dd <- data.frame(in1=rep(LETTERS[1:3], 2), in2=letters[1:6])
ui <- basicPage(
selectInput(
inputId = "in1",
label = "in1",
choices = unique(dd$in1),
multiple = TRUE
),
selectInput(
inputId = "in2",
label = "in2",
choices = unique(dd$in2),
multiple = TRUE
)
)
server <- function(input, output, session) {
observeEvent(input$in1, {
updateSelectInput(
session = session,
inputId = "in2",
label = "updated in2",
choices = dd[dd$in1 %in% input$in1, "in2"]
)
}
)
}
shinyApp(ui, server)
通过使用reactiveVal
存储已经做出的选择,并将reactiveVal
的内容传递给selected
的{{1}}参数,我们可以获得未重置的值。下面是一个带有两个输入的简单案例的概念证明:
update*input