shinyjs::enable UI 闪亮应用程序启动时的小部件

shinyjs::enable UI widget on shiny app launch

我正在使用 shinyjs 启用和禁用 UI 小部件 (inputId="check_buttons")。目前,该小部件仅在用户单击转到按钮 (input$go) 后启用。是否可以在启动应用程序时默认启用 UI 小部件 check_buttons

observeEvent(input$go, 
  {
  shinyjs::enable("check_buttons")
})

observeEvent({input$select_box_input
              input$radio_button_input
              },
  {
  shinyjs::disable("check_buttons")
})

问题是 observeEventinput$select_box_input/input$radio_button_input 小部件初始化时触发禁用 check_buttons 小部件。您可以使用 observeEventignoreInit 参数绕过此行为:

ignoreInit

If TRUE, then, when this observeEvent is first created/initialized, ignore the handlerExpr (the second argument), whether it is otherwise supposed to run or not. The default is FALSE. See Details.

实施行为的最小示例:

library(shiny)
library(shinyjs)

shinyApp(
  shinyUI(
    fluidPage(
      shinyjs::useShinyjs(),
      actionButton('go', 'go'),
      radioButtons('radio_button_input', 'radio', choices = c('a','b')),
      checkboxInput('select_box_input', 'check', value=TRUE),
      checkboxGroupInput('check_buttons', 'boxes', choices = c('1','2'))
    )
  ),
  shinyServer(function(input, output, session) {
    observeEvent(input$go, {
                 shinyjs::enable("check_buttons")
    })
    
    observeEvent({
      input$radio_button_input
      input$select_box_input
      }, {
        shinyjs::disable("check_buttons")
      }, ignoreInit = TRUE)
  })
)