2016-10-15 3 views
0

Используя кнопку действия, я хотел бы загрузить некоторые предустановленные значения в элементы пользовательского интерфейса моего блестящего приложения и затем запустить вывод из обновленного пользовательского интерфейса. В приложении ниже есть две кнопки. Print напечатает все, что есть на входе $ txt, на выход. Кнопка preset должна обновить элемент пользовательского интерфейса с заданным значением и впоследствии распечатать это значение на выходе. Желаемая функциональность эквивалентна нажатию 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 
    }) 

Мое приложение имеет много динамических элементов пользовательского интерфейса, а также модульных фильтров результатом которого является отфильтрованный кадр данных, который используется в выходных данных. Поэтому, чтобы получить правильный фильтрованный фрейм данных, сами элементы пользовательского интерфейса должны быть обновлены до создания вывода. Если это имеет смысл. Так можно ли подражать действию нажатия preset, а затем print?

ответ

0

Насколько я вижу, если вы позволите всем элементам UI зависеть от ввода $ preset, все они обновляются, как только нажимается preset.

библиотека (блестящий)

ui <- fluidPage(
    sidebarLayout(
    sidebarPanel(
     textInput('txt','Text',value = ''), 
     actionButton('print','Print'), 
     actionButton('preset','preset'), 
     uiOutput('myOutput') 
    ), 
    mainPanel(
     verbatimTextOutput("outText") 
    ))) 

server <- function(input, output,session) { 

    # default counter just for demonstration of dependency on preset button 
    default <<- 0 

    output$myOutput <- renderUI({ 

    input$preset # to introduce dependency on preset button 

    default <<- default + 1 

    textInput('myText', '', value = default) 
    }) 

    values <- reactiveValues(text='') 

    observeEvent(input$print,{ 
    values$text <- input$txt 
    }) 
    observeEvent(input$preset,{ 
    presetVal <-'Some preset value' 
    session$sendInputMessage('txt', list(value = presetVal)) 
    values$text <- presetVal 
    }) 

    output$outText <- renderPrint({ 
    print(values$text) 
    }) 

} 

shinyApp(ui, server) 
Смежные вопросы