我正在尝试将动态生成的链接添加到可变长度的数据表中。单击链接应将焦点切换到详细信息选项卡。同时,应将选择输入更新为单击的汽车品牌,以便更新“详细信息”选项卡上的信息。我准备了一个带有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)
任何帮助将不胜感激。谢谢!
答案 0 :(得分: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)
}