R Shiny - Сброс группы динамически созданных входов с использованием brightjs :: reset - PullRequest
2 голосов
/ 04 июня 2019

Приложение ниже имеет две кнопки: Add и Reset All.При нажатии Add вставляется объект пользовательского интерфейса, который содержит:

  1. Два входа, Month и Year.
  2. Кнопка удаления Remove, которая удаляет объект приclicked.

Нажатие Reset All сбрасывает все вставленные входные данные до их исходных значений.

Вот снимок экрана приложения после трехкратного нажатия на Add:

enter image description here

Приложение выглядит следующим образом:

library(shiny)
library(shinyjs)

# UI
ui <- fluidPage(
  useShinyjs(),

  tags$head(tags$style(HTML('.shiny-split-layout > div { overflow: visible; }'))),

  tagList(
    span(
      actionButton('add', 'Add'),
      actionButton('reset', 'Reset All')
    ),
    fluidRow(div(id = 'placeholder'))
  )

)

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

  rv = reactiveValues(ctn = 0)

  observeEvent(input$add, {

    rv$ctn = rv$ctn + 1

    Id = function(id) paste0(id, rv$ctn)

    insertUI(
      selector = '#placeholder',
      ui = div(
        id = Id('inputGroup'),
        splitLayout(
          cellWidths = '10%',
          h4(Id('Month ')),
          selectInput(Id('month'), 'Month:', month.name),
          selectInput(Id('year'), 'Year:', 1510:1550),
          actionButton(Id('remove'), 'Remove'))
      )
    )

    remove_id = Id('remove')
    remove_group = Id('inputGroup')

    observeEvent(input[[remove_id]], {

      removeUI(selector = paste0('#', remove_group))

    })
  })

  observeEvent(input$reset, {

    reset('placeholder')
  })
}

# Run app
shinyApp(ui, server)

Кнопка Reset All, кажется, работает по большей части, но не работает в следующемcase:

  1. Нажмите Add.
  2. Внесите изменения во входные данные для месяца 1 и нажмите Reset All - работает здесь, входные данные для 1-го месяца сбрасываются до их начальных значений.
  3. Снова нажмите Add.
  4. Измените Year для Месяца 2 и нажмите Reset All - здесь не работает, ввод Year для Месяца 2 - не сброс к своему начальному значению (однако , повторное нажатие Reset All снова сбрасывает значение, что сбивает с толку ).

Я не уверен, что сиспользование этого поведения или как его исправить, чтобы любая помощь была бы высоко оценена.

...