【发布时间】:2016-10-15 15:38:27
【问题描述】:
使用操作按钮,我想将一些预设值加载到我闪亮的应用程序的 UI 元素中,然后触发更新后的 UI 的输出。在下面的应用程序中有两个按钮。 Print 会将 input$txt 中的任何内容打印到输出中。 preset 按钮应使用预设值更新 UI 元素,然后将此值打印到输出。所需功能相当于按preset,然后按print。
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput('txt','Text',value = ''),
actionButton('print','Print'),
actionButton('preset','preset')
),
mainPanel(
verbatimTextOutput("outText")
)))
server <- function(input, output,session) {
values <- reactiveValues(text='')
observeEvent(input$print,{
values$text <- input$txt
})
observeEvent(input$preset,{
presetVal <-'Some preset value'
session$sendInputMessage('txt', list(value = presetVal))
})
output$outText <- renderPrint({
print(values$text)
})
}
shinyApp(ui, server)
那么为什么不这样做呢?
observeEvent(input$preset,{
presetVal <-'Some preset value'
session$sendInputMessage('txt', list(value = presetVal))
values$text <- presetVal
})
我的应用程序有很多动态 UI 元素和模块化过滤器,其结果是在输出中使用的过滤数据框。所以为了得到正确的过滤数据框,UI元素本身需要在创建输出之前刷新。如果这是有道理的。那么是否可以模拟按preset 后跟print 的动作?
【问题讨论】: