【问题标题】:Tab selection in URL (Shiny - Shiny Dashboard)URL 中的选项卡选择(Shiny - Shiny Dashboard)
【发布时间】:2017-10-14 14:51:27
【问题描述】:

我有一个 Shiny 应用,其结构如下:

shinyUI(dashboardPage(title="Map",
                      dashboardHeader(title = tags$img(src="logo.png")),
                      dashboardSidebar(sidebarMenu(id = "totalTab",
                                       menuItem("Users", tabName = "dashboard", icon = icon("user-circle")),
                                       menuItem("Map", tabName = "cities", icon = icon("map-o")),
                                       menuItem("Med", tabName = "med", icon = icon("building-o"), selected = TRUE),                                   
                                       menuItem("Data", tabName = "opdata", icon = icon("database"))
                                       ),
                      dashboardBody(tabItems(
                        tabItem(tabName = "dashboard", uiOutput("bodyuser")),
                        tabItem(tabName = "med", uiOutput("bodyoutput")),
                        tabItem(tabName = "cities", uiOutput("citiesout")),
                        tabItem(tabName = "opdata", uiOutput("dataout"))
                      ))
))

当我打开应用程序时,我首先看到的是选项卡项“med”。在“med”中,我有一个名为“TabMap”的标签集。我想使用这样的 URL 更新“TabMap”:

observe({
    query <- parseQueryString(session$clientData$url_search)
    if (!is.null(query[['panelname']])) {
      rv$rvpanel <- query[['panelname']]
      updateTabsetPanel(session, "TabMap", selected = rv$rvpanel)
    }
  })

或者这个:

observe({
    query <- parseQueryString(session$clientData$url_search)
    if (!is.null(query[['panelname']])) {
      updateTabsetPanel(session, "TabMap", selected = query[['panelname']])
    }
  })

但两者都不起作用。我该怎么做?

PD:rv$rvpanel 是一个反应值...

标签集:

  output$bodyoutput <- renderUI({
    box(title = "Map", width ="100%", status = "info", solidHeader = TRUE,
        uiOutput("tabmap"))
  })

  output$tabmap <- renderUI({
    tabsetPanel(id = "TabMap",
                tabPanel(width = "100%", title = "Add", value="panel5", uiOutput("formdead")),
                tabPanel(width = "100%", title = "Ours", value="panel1", uiOutput("mapdeadout")),
                tabPanel(width = "100%", title = "Month", value="panel4", uiOutput("mapmonthout")),
                tabPanel(width = "100%", title = "Map", value = "panel2", uiOutput("maplifeout")),
                tabPanel(width = "100%", title = "History", value="panel3", uiOutput("formhist"))
                )
  })

【问题讨论】:

  • 我没有看到你的tabsetpanel,...?
  • @BigDataScientist 已编辑

标签: r shiny shiny-server shinydashboard


【解决方案1】:

您只是错过了一件事,即在执行观察代码之前检查"TabMap" 是否已经呈现并在输入中可用。

下面的代码似乎有效

 observe({
        if(any(names(input) == "TabMap")){
          query <- parseQueryString(session$clientData$url_search)
          if (!is.null(query[['panelname']])) {
            rv$rvpanel <- query[['panelname']]
            updateTabsetPanel(session, "TabMap", selected = rv$rvpanel)

          } 
        }

      })




  observe({
        if(any(names(input) == "TabMap")){
          query <- parseQueryString(session$clientData$url_search)
          if (!is.null(query[['panelname']])) {
            updateTabsetPanel(session, "TabMap", selected = query[['panelname']])
          } 
        }

      })

希望这会有所帮助!

【讨论】:

  • 谢谢!但我需要先创建它,它必须显示。我不得不避免在第一个“TabMap”中使用 uiOutput
猜你喜欢
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 2017-04-06
  • 2019-04-12
  • 1970-01-01
相关资源
最近更新 更多