您可以使用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
)
})
}
)
本文链接:https://www.f2er.com/3166003.html