我有一个相当复杂的用户界面,具有长链依赖用户输入。更新依赖链的输入
我想添加的一个功能是能够将任何给定时间的所有输入值存储为字符串,并使用该字符串重置所有输入,作为actionButton的结果。将字符串存储为JSON很容易,但恢复相关输入已被证明非常棘手,我想知道是否有任何好的想法。
下面提供了一个很小的示例应用程序。您可以看到变量选择取决于所选组(group1或group2)。
点击actionButton后,我想要设置group = group2和variable = group2_variable2。
但点击只准确设置组,并且变量设置为第一个(默认)选项。
我假设我必须等到独立输入完全复位后才更新任何相关输入,但是有没有一种系统的方法可以在一个观察()内完成所有操作?还是有另一种首选的方法呢?
library(shiny)
groups <- c('group1', 'group2')
variables <- list(
group1 = c('group1_var1', 'group1_var2'),
group2 = c('group2_var1', 'group2_var2'))
ui <- pageWithSidebar(
# Application title
headerPanel('Demo'),
# Sidebar with a slider input for number of bins
sidebarPanel(
selectInput(
inputId = 'group',
label = 'Group:',
choices = groups),
uiOutput('variable_selector'),
actionButton(
inputId = 'reset_parameters',
label = 'Reset Parameters')
),
# Show a plot of the generated distribution
mainPanel(
h4('Demo')
)
)
server <- shinyServer(function(input, output, session) {
output$variable_selector <- renderUI({
selectInput(
inputId = 'variable',
label = 'Variable:',
choices = variables[[input$group]])
})
observe({
if (input$reset_parameters > 0) {
updateSelectInput(
session,
inputId = 'group',
selected = 'group2')
updateSelectInput(
session,
inputId = 'variable',
selected = 'group2_var2')
}
})
})
shinyApp(ui = ui, server = server)
谢谢,似乎工作!我有一种感觉,我会遇到一些只在某些条件下才存在的输入(因此使用renderUI),但这确实解决了我提出的一个更简单的问题。 –