gpt4 book ai didi

r - 如何用 shinyjs 隐藏 navbarMenus?

转载 作者:行者123 更新时间:2023-12-02 01:08:59 26 4
gpt4 key购买 nike

这个问题与 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。此外,您不能在 navbarMenutabPanel 周围使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com