【问题标题】:navigate to next tab post clicking on link导航到下一个标签帖子点击链接
【发布时间】:2021-12-28 10:52:56
【问题描述】:

下面是应用程序。单击 DT 表上的“我单击”时,我需要导航到下一个选项卡。但根据下面的代码,这是行不通的。谁能帮我.............................................. …………

library(shiny)
library(shinydashboard)
library(DT)

# UI ---------------------------------------------------------------------

ui <- fluidPage(
  tabsetPanel(
    id = "panels",
    tabPanel(
      "A",
      p(),
      DTOutput("tab")
      # actionLink("link_to_tabpanel_b", "Link to panel B")
      # HTML('<a id="Iclickehase" class="action-button" href="#">I clicked</a>')
    ),
    tabPanel(
      "B",
      h3("Some information"),
      tags$li("Item 1"),
      tags$li("Item 2"),
      actionLink("link_to_tabpanel_a", "Link to panel A")
    )
  )
)

# Server ------------------------------------------------------------------

server <- function(input, output, session) {
  #   observeEvent(input$link_to_tabpanel_b, {
  #     tags$a(href = "#tab-4527-2")
  #   })
  
  df <- data.frame(a = c(1))
  df$b <- HTML('<a id="Iclickehase" class="action-button" href="#">I clicked</a>')
  # 
  output$tab <- renderDataTable({
    datatable(df,escape = F,selection = 'none')
  })
  
  observeEvent(input$Iclickehase, {
    newvalue <- "B"
    updateTabItems(session, "panels", newvalue)
  })
  observeEvent(input$link_to_tabpanel_a, {
    newvalue <- "A"
    updateTabsetPanel(session, "panels", newvalue)
  })
}

shinyApp(ui, server)

【问题讨论】:

    标签: shiny


    【解决方案1】:

    将输入(如 actionLink)添加到数据表时,您需要手动绑定它们,here 就是原因。

    请检查以下内容:

    library(shiny)
    library(shinydashboard)
    library(DT)
    
    # UI ---------------------------------------------------------------------
    
    ui <- fluidPage(tabsetPanel(
      id = "panels",
      tabPanel("A",
               p(),
               DTOutput("tab")),
      tabPanel("B",
        h3("Some information"),
        tags$li("Item 1"),
        tags$li("Item 2"),
        actionLink("link_to_tabpanel_a", "Link to panel A")
      )
    ))
    
    # Server ------------------------------------------------------------------
    
    server <- function(input, output, session) {
      
      DF <- data.frame(a = c(1))
      DF$b <- HTML('<a id="Iclickehase" class="action-button" href="#">I clicked</a>')
      
      output$tab <- renderDataTable({
        datatable(
          DF,
          escape = FALSE,
          selection = 'none',
          options = list(
            preDrawCallback = JS('function() { Shiny.unbindAll(this.api().table().node()); }'),
            drawCallback = JS('function() { Shiny.bindAll(this.api().table().node()); } ')
          )
        )
      })
      
      observeEvent(input$Iclickehase, {
        newvalue <- "B"
        updateTabItems(session, "panels", newvalue)
      })
      observeEvent(input$link_to_tabpanel_a, {
        newvalue <- "A"
        updateTabsetPanel(session, "panels", newvalue)
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 非常感谢。但是如果由于过滤导致表格值发生变化,那么这种导航会不会发生呢?为什么这样?我们能解决这个问题吗?
    • 重新渲染表格后绑定可能会丢失。但是,在您上面的示例中,没有进行过滤。请发布一个带有适当示例的新问题以跟踪问题。
    • 我在这里添加了另一个问题。你能帮忙stackoverflow.com/questions/70006107/…
    猜你喜欢
    • 2017-10-26
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多