【问题标题】:Update color of actionlink in shiny更新闪亮的actionlink的颜色
【发布时间】:2021-07-31 06:53:01
【问题描述】:

我想在点击后更改 actionLink 的颜色。我找不到任何可以实现这一目标的帖子。

我发现了什么:

  1. R Shiny toggle text of actionLink
  2. shiny module: update color of button

但这些都没有帮助。这是来自第一个链接的答案的示例代码(@Julien Navarre)

library(shiny)
library(shinyjs)
shinyApp(
  ui = shinyUI(
    fluidPage(useShinyjs(),
              actionLink("button", "Show additional"),
              hidden(div(id='text_div', verbatimTextOutput("text")))
    )
  ),

  server = function(input, output, session){
    observeEvent(input$button, {
      toggle('text_div')
      output$text <- renderText({"Additional"})

      if (input$button %% 2 == 1) {
        txt <- "Hide Additional"
      } else {
        txt <- "Show Additional"
      }
      updateActionButton(session, "button", label = txt)
    })

  }
)

在这段代码中,一旦标签改变,标签的颜色也应该改变。例如,Show Additional 链接应该是绿色,而Hide Additional 应该是红色。

我尝试了 updateactionLinkcolor 参数,但没有这样的参数。

我怎样才能做到这一点?

【问题讨论】:

    标签: r shiny shinydashboard shiny-reactivity shinyjs


    【解决方案1】:

    一种方法是使用来自 {shinyjs} 的 css 和 addClassremoveClass

    library(shiny)
    library(shinyjs)
    
    shinyApp(
      ui = shinyUI(
        fluidPage(useShinyjs(),
                  
                  tags$head(
                    tags$style(HTML("
                      a.action-button {
                        color: #00ff00;
                      }
                      a.action-button.red {
                        color: #ff0000;
                      }"))
                  ),
                  
                  actionLink("button", "Show additional"),
                  
                  hidden(div(id='text_div', verbatimTextOutput("text")))
        )
      ),
      
      server = function(input, output, session){
        
        observeEvent(input$button, {
          
          if (input$button %% 2 == 1) {
            txt <- "Hide Additional"
            shinyjs::addClass("button", "red")
          } else {
            txt <- "Show Additional"
            shinyjs::removeClass("button", "red")
          }
          
          toggle('text_div')
          output$text <- renderText({"Additional"})
    
          updateActionButton(session, "button", label = txt)
        })
        
      }
    )
    

    【讨论】:

    • 工作就像一个魅力!非常感谢!!
    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2015-10-10
    • 2017-12-14
    • 2020-06-22
    相关资源
    最近更新 更多