【发布时间】:2018-02-14 19:12:17
【问题描述】:
一个演示问题的最小示例:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title='Dashboard'),
dashboardSidebar(
sidebarMenu(
menuItem('Dashboard', tabName='dashboard', icon=icon('dashboard'))
)
),
dashboardBody(
tabItems(
tabItem(tabName = 'dashboard',
fluidRow(
tabBox(
id='dashboard_tabs',
tabPanel(
title='Tab 1',
uiOutput('tab1Content')
),
tabPanel(
title='Tab 2',
uiOutput('tab2Content')
),
width=8
),
box(
title='Input summary',
uiOutput('summary'),
width=4
)
),
actionButton('update', 'Update summary')
)
)
)
)
server <- function(input, output, session) {
state <- reactiveValues(
input1=NULL,
input2=NULL
)
observeEvent(input$update, {
state$input1 <- input$input1
state$input2 <- input$input2
})
output$summary <- renderUI({
shiny::tags$ul(
shiny::tags$li(
strong('Input 1: '),
state$input1
),
shiny::tags$li(
strong('Input 2: '),
state$input2
)
)
})
output$tab1Content <- renderUI(
textInput('input1', 'Input 1', value=1)
)
output$tab2Content <- renderUI(
textInput('input2', 'Input 2', value=2)
)
}
shinyApp(ui, server)
如果运行此示例并单击“更新”按钮,则摘要框(右)仅显示“输入 1”的值。如果表单没有选项卡,或者输入直接在 ui 上而不是通过 uiOutput+renderUI 呈现,则不会发生这种情况,因此这似乎是选项卡和 uiOutput 的一种不良行为。
那么,如果标签是通过 renderUI 呈现的, 导航到这些标签之前,从标签表单获取输入值的方法是什么?
EDIT1:修正了示例代码中的拼写错误。 EDIT2:显示真正问题的示例代码,上一个版本没有。
【问题讨论】:
标签: r shiny shinydashboard