闪亮的navbarPage一直显示" tab-pane active"

时间:2017-10-07 14:41:23

标签: r shiny

这是一个简单的Shiny应用程序的代码:

UI

    library(shiny)
    shareholders.list <- c("Investor A", "Investor B")
    tmp.label.select.inv <- "Select one or multiple investors:"
    shinyUI(navbarPage(    
      title = "App",
      titlePanel(title = "TITLE"),
      tabPanel("Tab 1"             
        , sidebarLayout(
            sidebarPanel(
              style = "font-family: 'Segoe UI';
                       color: #FFFFFF;
                       background: #014d92;",
              selectInput("tmp.IDs", 
                label = tmp.label.select.inv,      
                choices = union("All", shareholders.list),
                multiple = T,
                width = 245
               ), 
               actionButton("select.all", 
                 em("Select / Deselect All"),
                 icon = icon("ok-sign", lib = "glyphicon"),
                 width = 245,
                 style="color: #000000; 
                       background: #FFFFFF; 
                       border-color: #000000"
                ),       
                width = 2                
              ),                           
              mainPanel(                
                h5(em("Chosen Investors: "), 
                br(),strong(textOutput("selected_tmp.IDs"))),
                br(),br(),
                tableOutput("table_tmp.IDs")
              ),      
              position = "left"      
            )
          )    
          , tabPanel("Download Tables",
              mainPanel(
                textOutput("odd_even_select.all")
            ))   
            , selected = "Tab 1"
          )
        )

服务器

    shinyServer(function(input, output) {

        output$selected_tmp.IDs <- renderText({
          paste0(input$tmp.IDs)
        })

    })

问题是应用程序一直显示&#34; tab-pane active tab-5966-1 &#34;在两个标签上。

知道怎么解决吗?

编辑:

我已经编辑了代码并添加了更多细节以便可复制(请注意,上面实例中不需要的显示现在表示&#34; tab-25-25-1&#34; - 参见下面的图片)。< / p>

enter image description here

1 个答案:

答案 0 :(得分:0)

您遇到的问题是您使用函数shiny::titlePanel的输出作为navbarPage的参数。这是一个更简单的应用程序,基本上导致相同的行为

library(shiny)

shinyApp(
  ui = navbarPage(
    title = "app",
    titlePanel("Title"),
    tabPanel("Tab1", "content1"),
    tabPanel("Tab2", "content2")
  ),
  server = function(input, output){}
)

?navbarPage的文档中可以清楚地看到,所有未命名的参数(...)都应该是tabPanel元素或字符串。

  

... 要包含在页面中的tabPanel元素。 navbarMenu函数也接受字符串,它将用作菜单部分标题。如果字符串是一组破折号,如&#34; ----&#34;菜单中将显示水平分隔符。

当你在这里放titlePanel时,我不知道你期望发生什么。您是希望标题显示在每个标签中还是与"app"标题一起显示?

无论如何,删除titlePanel可解决问题

shinyApp(
  ui = navbarPage(
    title = "app",
    tabPanel("Tab1", "content1"),
    tabPanel("Tab2", "content2")
  ),
  server = function(input, output){}
)