RShiny dashboard: наблюдайте события запускаются, когда вкладка открывается, даже если ignoreInit = TRUE - PullRequest
0 голосов
/ 23 января 2020

В приведенном ниже примере кода я хочу, чтобы наблюдаемое событие срабатывало только при нажатии на сам элемент dateInput, а не при инициировании вкладки "tab_BDay". Добавление ignoreInit = TRUE и ignoreNULL = TRUE в оператор наблюдений, похоже, не работает. Есть идеи? Спасибо!

# Libraries-----
library(shiny)
library(shinydashboard)
library(tidyverse)
library(shinyWidgets)
library(shinyjs)
library(Cairo)
library(plotly)
library(purrr)
library(zoo)
library(DT)
library(magrittr)

#ui------

ui_body_BDay <- tabPanel("Birthday inputs",
                         value ="BDay_inputs",
                         tags$div(id = "bday_input_rows",
                                  uiOutput("bday_menu")
                                  ),
                         #button to add rows
                         fluidRow(
                           column(9, actionButton("add", "Add row"))
                         )
)

ui_dashboardBody <- dashboardBody(
  tabItems(
    tabItem(
      tabName = "tab_BDay",
      tabBox(title = "", width = 12,
             id = "BDay_tabset",
             ui_body_BDay)
    )
  )
)

ui_sidebar_item <- dashboardSidebar(
  menuItem(
    text = "Birthday Collection",
    tabName = "tab_BDay",
    icon = icon("wrench", lib = "font-awesome")
  )
)

ui <- dashboardPage(
  header = dashboardHeader(title = "Birthday example"),
  sidebar = ui_sidebar_item,
  body = ui_dashboardBody
)

#server-----

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

  output$bday_menu <- renderUI({
    dateInput('testSelect', 'Test')
  })
  observeEvent(input$testSelect, ignoreInit = TRUE, ignoreNULL = TRUE, { 
    print(input$testSelect)
    print("I am getting triggered unnecessarily")
  })

}
shinyApp(ui, server)
...