我有一個相當複雜的用戶界面,具有長鏈依賴用戶輸入。更新依賴鏈的輸入
我想添加的一個功能是能夠將任何給定時間的所有輸入值存儲爲字符串,並使用該字符串重置所有輸入,作爲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),但這確實解決了我提出的一個更簡單的問題。 –