2016-10-15 12 views
0

アクションボタンを使用して、光沢のあるアプリケーションのUI要素にいくつかのプリセット値を読み込み、更新されたUIの出力をトリガーしたいと思います。下のアプリには2つのボタンがあります。 Printは入力$ txtにあるものを出力に出力します。 presetボタンは、UI要素をプリセット値で更新し、その後この値を出力に出力する必要があります。所望の機能は、presetの後にprintを押すことと同じです。光沢のあるUI要素の反応順序

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を押すという動作を模倣することは可能ですか?

答えて

0

私が見ている限り、すべてのUI要素を入力$プリセットに依存させると、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) 

ライブラリー

関連する問題