根据导航栏面板显示或隐藏闪亮的小部件

我的仪表板下面有光泽,右侧栏中有一个shiny小部件。我想知道只有在选择tabPanel Plot时才能显示它。

library(shiny)
library(shinydashboardPlus)
shinyApp(
  ui = dashboardPagePlus(
    header = dashboardheaderPlus(
      enable_rightsidebar = TRUE,rightSidebarIcon = "gears"
    ),sidebar = dashboardSidebar(),body = dashboardBody(
      navbarPage("Navbar!",tabPanel("Summary"
                 ),tabPanel("Plot"

                 )
                 )
    ),rightsidebar = rightSidebar(
      background = "dark",rightSidebarTabContent(
        id = 1,title = "Tab 1",icon = "desktop",active = TRUE,uiOutput("sl")

      )

    ),title = "Right Sidebar"
  ),server = function(input,output) {
    output$sl<-renderUI({
      sliderInput(
        "obs","Number of observations:",min = 0,max = 1000,value = 500
      )
    })


  }
)
lau29888440 回答:根据导航栏面板显示或隐藏闪亮的小部件

您可以使用JavaScript来实现:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
  ui = dashboardPagePlus(
    header = dashboardHeaderPlus(
      enable_rightsidebar = TRUE,rightSidebarIcon = "gears"
    ),sidebar = dashboardSidebar(),body = dashboardBody(
      navbarPage("Navbar!",tabPanel("Plot"

                 ),tabPanel("Summary"
                 )),tags$script(
        '$("a[data-toggle=\'tab\']").click(function(){
          if ($(this).data("value") == "Plot"){
            $("#sl").show()
          } else {
            $("#sl").hide()
          }
        })'
      )
    ),rightsidebar = rightSidebar(
      background = "dark",rightSidebarTabContent(
        id = 1,title = "Tab 1",icon = "desktop",active = TRUE,uiOutput("sl")

      )

    ),title = "Right Sidebar"
  ),server = function(input,output) {
    output$sl<-renderUI({
      sliderInput(
        "obs","Number of observations:",min = 0,max = 1000,value = 500
      )
    })


  }
)

或使用{golem} JS函数:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
  ui = dashboardPagePlus(
    header = dashboardHeaderPlus(
      enable_rightsidebar = TRUE,body = dashboardBody(
      golem::activate_js(),navbarPage("Navbar!",tags$script(
        '$("a[data-toggle=\'tab\']").click(function(){
          Shiny.setInputValue("tabactive",$(this).data("value"))
        })'
      )
    ),value = 500
      )
    })

    observeEvent( input$tabactive,{
      if (input$tabactive == "Plot"){
        golem::invoke_js("showid","sl")
      } else {
        golem::invoke_js("hideid","sl")
      }
    })



  }
)
,

您还可以在panel的帮助下隐藏整个shinyjs小部件

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

shinyApp(
  ui = dashboardPagePlus(
    header = dashboardHeaderPlus(
      enable_rightsidebar = TRUE,body = dashboardBody(
      useShinyjs(),tabPanel("Plot" ),id = "mynavbar",tabPanel("Summary"
                 ))
    ),uiOutput("sl")
      )
    ),output,session) {

    observeEvent(input$mynavbar,{
      if(input$mynavbar=="Plot"){
        show("right_sidebar")
      }
      else{
        hide("right_sidebar")
      }
    })

    output$sl<-renderUI({
      sliderInput(
        "obs",value = 500
      )
    })
  }
)

enter image description here

本文链接:https://www.f2er.com/3166003.html

大家都在问