【问题标题】:shinyjs::enable UI widget on shiny app launchshinyjs::enable UI 小部件在闪亮的应用程序启动时
【发布时间】:2018-07-01 09:46:18
【问题描述】:

我正在使用 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")
})

【问题讨论】:

    标签: r shiny shinyjs


    【解决方案1】:

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

    忽略初始化

    如果为 TRUE,则在首次创建/初始化此 observeEvent 时,忽略 handlerExpr(第二个参数),无论它是否应该运行。默认值为假。查看详情。

    实现行为的最小示例:

    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)
      })
    )
    

    【讨论】:

    • 谢谢,这确实回答了这个问题。不幸的是,我的用例与我的示例不符。我认为这是因为radio_button_input 是由renderUI 在我的server.R 脚本中而不是在ui 脚本中生成的。
    • 如果没有可重现的用例示例,很难回答您要提出的问题。我建议发布一个涵盖您的用例的小型应用程序(如我的回答)。当可能有其他隐藏要求时,不希望其他人花时间回答问题。
    • 对,我要标记你的答案,因为它确实回答了这个问题。稍后将发布另一个问题。谢谢。
    猜你喜欢
    • 2017-12-25
    • 2016-08-01
    • 2018-06-14
    • 2019-08-09
    • 2021-09-23
    • 2019-12-05
    • 2018-05-12
    • 2016-02-24
    相关资源
    最近更新 更多