首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Conditional navbarPage菜单

Conditional navbarPage菜单
EN

Stack Overflow用户
提问于 2017-08-02 01:39:44
回答 1查看 302关注 0票数 1

我有一个关于基于服务器端变量的navbarMenu条件生成的问题。我创建了一个小的演示应用程序来演示它。

代码语言:javascript
运行
复制
ui = shinyUI(
    navbarPage(title = "Demo app",
               navbarMenu("Small numbers",
                          tabPanel("First small page", uiOutput("firstSmallPage"))
               ),
               navbarMenu("Big numbers",
                          tabPanel("First big page", uiOutput("firstBigPage"))
               )
    )
)

server = shinyServer(function(input, output, session) {

    rand_num = sample(1:10)[1]
    # if rand_num is higher than 5 I dont want Big number navbarMenu to appear
    print(rand_num)

    output$firstSmallPage <- renderUI({
        plotOutput("smallPlot")
    })
    output$smallPlot <- renderPlot({plot(1:10)})

    output$firstBigPage <- renderUI({
        plotOutput("bigPlot")
    })
    output$bigPlot <- renderPlot({plot(990:1000)})
})

app = shinyApp(ui=ui, server=server)

我试图归档的是,如果rand_num高于5,则隐藏“大数字”选项卡。我尝试在服务器端将navbarMenu包装在renderUI中,并在ui端将其替换为uiOutput,但失败了。2个以上的navbarMenu是解决方案的关键,提前感谢

EN

回答 1

Stack Overflow用户

发布于 2017-08-02 02:52:43

它似乎是这样工作的:

代码语言:javascript
运行
复制
library(shiny)
library(shinyjs)
ui = shinyUI(
  navbarPage(
    useShinyjs(),
    title = "Demo app",
    navbarMenu("Small numbers",
               tabPanel("First small page", uiOutput("firstSmallPage"))
    ),
    navbarMenu("Big numbers", 
               tabPanel("First big page", uiOutput("firstBigPage"))
    )

  )
)

server = shinyServer(function(input, output, session) {

  rand_num = sample(1:10)[1]
  # if rand_num is higher than 5 I dont want Big number navbarMenu to appear
  print(rand_num)
  if(rand_num>5){
    hide(selector = ".navbar-nav li:nth-child(3)")
  }

  output$firstSmallPage <- renderUI({
    plotOutput("smallPlot")
  })
  output$smallPlot <- renderPlot({plot(1:10)})

  output$firstBigPage <- renderUI({
    plotOutput("bigPlot")
  })
  output$bigPlot <- renderPlot({plot(990:1000)})
})

app = shinyApp(ui=ui, server=server)
runApp(app)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45444482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档