2017-08-01 10 views
1

サーバー側の変数に基づいてnavbarMenuの条件付き生成について質問があります。私はそれを説明するために小さなデモアプリを作成しました。私はアーカイブにしようとしています何条件付きnavbarPageメニュー

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高ければ大きな数字タブを非表示にすることである私は、サーバー側でrenderUInavbarMenu Sをラップし、UI側でuiOutputで置き換えてみましたが、それはでした失敗しました。ソリューションが2つ以上の装置で動作することが重要です。navbarMenu事前

答えて

0

のおかげでこのように動作しているようです:

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

私は '.navbar-NAV李にすることを推測しています:' navbarMenu'は私がしたいので、n番目の子(3) '我々は3を持っています隠すのが最後ですか?私が非表示にする 'navbarMenu'を示すために順序を使わなければならないということですか? – user974514

+0

@ user974514はい。私はそれを選択する別の方法を知らない。 –