ignoreInit не работает с динамическим контентом

Первый шаг

установить mongodb в вашей Linux-машине с помощью

apt install mongodb-client & amp; & amp; & amp; & amp; & amp; apt install mongodb-server

второй шаг

, если вы хотите, измените путь к базе данных вместо вашего системного пути по умолчанию. так что сделайте следующие шаги и измените их для себя.

mongod --directoryperdb --dbpath /var/lib/mongodb/data/db --logpath /var/lib/mongodb/log/mongodb.log --logappend --rest

, и в вашей машине Windows это просто как раз поместите флаг -install. вы должны получить успешное сообщение.

С наилучшими пожеланиями ...

2
задан Qrt 18 January 2019 в 09:48
поделиться

1 ответ

К сожалению, я не могу комментировать из-за отсутствия репутации, но вот мои мысли:

Я полагаю, что наблюдаемое событие блокируется при инициализации. Но после этого вы визуализируете элемент пользовательского интерфейса. Входные данные $ dynamicBox изменяются с NULL на FALSE, что приводит к запуску функции наблюдающего события.

Вы можете подделать поведение, введя в сеанс уникальную глобальную переменную, скажем unique_init_variable < < - FALSE, а затем измените ее на true, как только вы используете этот флажок. Вот пример кода

library(shinydashboard)
library(shiny)
library(shinyjs)

ui <- dashboardPage(
  dashboardHeader(title = "observeEvent ignoreInit"),
  dashboardSidebar(),
  dashboardBody(
    useShinyjs(),
    checkboxInput("staticBox", "static"),
    uiOutput("body"))
)

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

  # unique init variable
  unique_init_variable <<- FALSE

  output$body <- renderUI( tagList(
    checkboxInput("dynamicBox", "dynamic"),
    checkboxInput("dynamicBoxDelayed", "dynamic delayed")
  ))

  # observe static checkBox
  observeEvent(input$staticBox, {
    cat("observeEvent of static checkBox is executed\n")
  }, ignoreInit=TRUE)

  # observe dynamic checkBox
  observeEvent(input$dynamicBox, {
    if (input$dynamicBox == TRUE) {
      unique_init_variable <<- TRUE
    }
    if (unique_init_variable) {
      # this is executed upon start, although ignoreInit is set to TRUE
      cat("observeEvent of dynamic checkBox is executed\n")
      cat( paste0("dynamicBox value = '", input$dynamicBox, "'\n") )
    }
  }, ignoreInit=TRUE)

  # observe dynamicDelayed checkBox
  shinyjs::delay(100, {
    observeEvent(input$dynamicBoxDelayed, {
      cat("observeEvent of dynamic checkBoxDelayed is executed\n")
    }, ignoreInit=TRUE)
  })

}

shinyApp(ui, server)
0
ответ дан hjonas 18 January 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: