URL中的选项卡选择(闪亮 - 闪亮仪表板)

时间:2017-05-15 17:57:07

标签: r shiny shiny-server shinydashboard

我有一个具有以下结构的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"的标签集。我想更新" TabMap"使用这样的URL:

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"))
                )
  })

1 个答案:

答案 0 :(得分:0)

在观察代码执行之前,您只是错过了一件事,检查输入中是否已呈现"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']])
          } 
        }

      })

希望这有帮助!