R Shiny наблюдаем, событие продолжает срабатывать - PullRequest
0 голосов
/ 06 июля 2018

Я изо всех сил пытаюсь заставить процесс наблюдающего события запускаться только один раз после того, как это вызывает событие - нажатие кнопки. Это иллюстрирует:

require(shiny)

ui = fluidPage(
  textInput("input_value", '1. input a value. 2. click button. 3. input another value', ''),
  actionButton("execute", 'execute'),
  textOutput('report')
)

server = function(input, output, session) {
  observeEvent(input$execute, {
    output$report = renderText(input$input_value)
  })
}

shinyApp(ui = ui, server = server, options = list(launch.browser = T))

Вы увидите, что после однократного нажатия кнопки textOutput реагирует на изменения textInput, а не на нажатия кнопки.

Я пробовал этот подход:

server = function(input, output, session) {
  o = observeEvent(input$execute, {
    output$report = renderText(input$input_value)
    o$destroy
  })
}

Нет эффекта. Я также попытался использовать функцию isolate без удачи. Благодарен за предложения.

1 Ответ

0 голосов
/ 06 июля 2018

Возможно, ваш isolate() вызов обернут вокруг renderText() вместо input$input_value. Это должно сделать это для вас:

require(shiny)

ui = fluidPage(
  textInput("input_value", '1. input a value. 2. click button. 3. input another value', ''),
  actionButton("execute", 'execute'),
  textOutput('report')
)

server = function(input, output, session) {
  observeEvent(input$execute, {
    output$report = renderText(isolate(input$input_value))
  })
}

shinyApp(ui = ui, server = server, options = list(launch.browser = T))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...