作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题与 navbarMenus 和 shinyjs 包的组合有关。我构建了一个 Shiny 的应用程序,并且还按照以下建议添加了用户登录:https://gist.github.com/withr/9001831 .
所以我知道哪个用户登录了。现在我想显示和隐藏整个 navbarMenu 和单个 tabPanel,具体取决于哪个用户登录。比方说,有两个用户,'admin' 和“自定义”,对于“管理员”,应显示所有 navbarMenus 和所有 tabPanel,而“自定义”仅显示 navbarMenu 2,并且在此菜单中仅显示 tabPanel 22。
library(shiny)
library(shinyjs)
# Define UI
ui <-
fluidPage(
titlePanel("NAVBARPAGE"), # title
br(),
################### NAVBAR ############################
navbarPage(
"", # title
################### TABS THEMA #######################
hidden(div(id='m1',
navbarMenu("Menu1",
tabPanel('tab11',plotOutput('tab_11')),
tabPanel('tab12',uiOutput('tab_12'))))),
navbarMenu("Menu2",
tabPanel('tab21',uiOutput('tab_21')),
hidden(div(id='xxx',tabPanel('tab22',uiOutput('tab_22')))))
#######################################################
))
###### SERVER #####
server <- function(input, output,session) {
#Define user
user<-'admin'
observe({
if (user=='admin') {
show('xxx')
show('m1')
}
else {
hide('xxx')
hide(m1)
}
})
# Run the application
shinyApp(ui = ui, server = server)
在这个最小的示例中,tabPanel ('tab22') 是隐藏的,但在我定义时不会显示
user<-'custom'
另外,第一个 navbarMenu 'm1' 的外观很奇怪 - 它实际上并没有隐藏,它只是空的。有知道的帮忙吗?
最佳答案
您的代码有一些错误,在您的 server
函数末尾缺少 }
,使用 m1< 调用
而不是 hide
函数"m1"
,并且不使用 shinyjs::useShinyjs()
初始化 shinyjs
。此外,您不能在 navbarMenu
或 tabPanel
周围使用 div
,它们将不会被渲染。最后,任何用户都可以很容易地显示/隐藏内容。
更好的选择是使用 uiOutput
根据用户创建 navbar
并使用用户名控制要呈现的内容。下面是一个基于您的代码的示例,用于显示基于用户的内容。
library(shiny)
library(shinyjs)
ui <- fluidPage(
selectInput("userSL", 'Users:', c('admin', 'custom')),
titlePanel("NAVBARPAGE"),
br(),
uiOutput("navbarPageUI")
)
server <- function(input, output,session) {
output$navbarPageUI <- renderUI({
user <- input$userSL
if (user == 'admin') {
navbarPage("",
navbarMenu("Menu1",
tabPanel('tab11',plotOutput('tab_11')),
tabPanel('tab12',uiOutput('tab_12'))
),
navbarMenu("Menu2",
tabPanel('tab21',uiOutput('tab_21')),
tabPanel('tab22',uiOutput('tab_22'))
)
)
} else {
navbarPage("",
navbarMenu("Menu2",
tabPanel('tab21',uiOutput('tab_21'))
)
)
}
})
}
shinyApp(ui = ui, server = server)
关于r - 如何用 shinyjs 隐藏 navbarMenus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053126/
我是一名优秀的程序员,十分优秀!