我有一个关于基于服务器端变量的navbarMenu条件生成的问题。我创建了一个小的演示应用程序来演示它。
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是解决方案的关键,提前感谢
发布于 2017-08-02 02:52:43
它似乎是这样工作的:
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)https://stackoverflow.com/questions/45444482
复制相似问题