【发布时间】:2016-06-12 15:02:41
【问题描述】:
我有一个相当复杂的用户界面,有很长的依赖用户输入链。
我要添加的一个功能是能够在任何给定时间将所有输入值存储为字符串,并使用该字符串重置所有输入作为 actionButton 的结果。将字符串存储为 JSON 很容易,但事实证明恢复相关输入很棘手,我想知道是否有什么好主意。
下面提供了一个小示例应用程序。您可以看到变量选择取决于所选组(组 1 或组 2)。
点击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)
【问题讨论】:
标签: r shiny shiny-server