【问题标题】:R/shiny change tab and input on dynamically generated link clickedR/闪亮的变化选项卡和点击动态生成的链接上的输入
【发布时间】:2018-10-31 07:05:59
【问题描述】:

我正在尝试将动态生成的链接添加到可变长度的数据表中。单击该链接应将焦点切换到详细信息选项卡。同时,选择输入应更新为被点击的汽车品牌,以便更新详情选项卡上的信息。我准备了一个带有 actionLinks 的最小示例。但是,我不知道如何让链接做我想做的事情。

library(shiny)
library(htmlwidgets)
library(tibble)
library(DT)

ui <- fluidPage(
  title = "Examples of DataTables",
  sidebarLayout(
    sidebarPanel(
      selectInput("car", h3("Car"),choices = rownames(mtcars))
    ),
    mainPanel(
      tabsetPanel(id = "dataset",
        tabPanel("Cars", DT::dataTableOutput("mytable1")),
        tabPanel("Details", DT::dataTableOutput("mytable2"))))))

server <- function(input, output) {

  shinyInput = function(FUN, len, id, labels, ...) {
    inputs = NULL
    for (i in seq_len(len)) {
      inputs[i] = as.character(FUN(paste0(id, i), label = labels[i], ...))
    }
    return(inputs)
  }

  output$mytable1 <- DT::renderDataTable({
    cars <- mtcars %>% rownames_to_column() %>% select(rowname, mpg, cyl)
    cars$rowname <- shinyInput(actionLink, nrow(cars), "link_", labels = cars$rowname)
    DT::datatable(cars, rownames = FALSE, escape = FALSE)
  })

  output$mytable2 <- DT::renderDataTable(DT::datatable(mtcars[input$car,]))
}

shinyApp(ui, server)

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/49700633/…。此外,我只能考虑先给您的标签集面板一个 ID,即tabsetPanel(id="yourID", tabPanel... ,然后尝试实现一个执行updateTabsetPanel(session, "yourID", selected = "Details") 的观察者。我知道这不是一个令人满意的答案,因为观察者缺乏目标输入,但也许它可以帮助您找到正确的解决方案。
  • 非常感谢您的意见。它帮助我找到了解决方案。我在示例中添加了 id,因为我在我想出的解决方案中使用了它。

标签: r dynamic datatable shiny tabs


【解决方案1】:

我找到了使用按钮的 onclick 函数和 JavaScript 语句的解决方案。要打开选项卡,请模拟单击它并使用 selectize 更改下拉菜单。

 shinyInput = function(FUN, len, id, labels, ...) {
    inputs = NULL
    for (i in seq_len(len)) {
      inputs[i] = as.character(FUN(paste0(id, i), label = labels[i], 
         onclick = paste0('$("#dataset li a")[1].click();$("#car")[0].selectize.setValue("',labels[i],'")')))
    }
    return(inputs)
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2023-03-13
    • 2017-07-20
    • 2020-10-01
    • 2018-09-16
    相关资源
    最近更新 更多