2016-04-28 3 views
3

Мой пользовательский интерфейс имеет активную кнопку, и всякий раз, когда пользователь нажимает на нее, следующий метод registerEvent вызывает API и возвращает числовое значение.Shiny - Обновление пользовательского интерфейса после вызова API внутри registerEvent

observeEvent(input$submit, { 

    url <- "http://my_ip/predict?" 
    value <- paste0('value=', input$value) 

    response <- POST(paste0(url,value)) 

    predicted <- as.numeric(content(response)) 
}) 

Проблема заключается в том, что я хочу, чтобы показать результат («предсказал» переменную) в Infobox в пользовательском интерфейсе, но только тогда, когда предсказывал имеет значение. Поэтому этот infoBox должен быть скрыт до тех пор, пока пользователь не нажмет кнопку в первый раз.

Какой выход следует добавить в пользовательский интерфейс ?. Как «предсказано» вести себя как входное значение $.

спасибо, что заранее.

EDIT

Раствор с помощью функции reactiveValues() при вызове API:

reactiveValues <- reactiveValues() 
reactiveValues$predicted <- as.numeric(content(response)) 

И затем, используя функцию renderInfoBox() на основе предыдущего значения.

+0

Посмотрите [shinyjs] (https://github.com/daattali/shinyjs) - чтобы показать и скрыть элементы. – SymbolixAU

+1

используйте 'reactiveValues', чтобы добавить к нему ответ. 'reactiveValues ​​$ предсказал <- as.numeric (content (response))' затем привяжите его к 'infoBox'. http://www.inside-r.org/packages/cran/shiny/docs/reactiveValues ​​ –

+1

Он работал с решением @PorkChop. Большое спасибо! –

ответ

0

Чтобы обновить это из приведенных выше комментариев:

Использование reactiveValues добавить ответ на него.

reactiveValues$predicted <- as.numeric(content(response))

затем привязать его к infoBox

Смежные вопросы