首页 > 解决方案 > 如何使用 JS 渲染函数在同一列中有多个超链接?

问题描述

我有一个显示数据表的闪亮应用程序(使用 DTedit R pckg),我想:

1)在同一个单元格中插入所有超链接,以新行分隔

2)在不同的选项卡中打开超链接

对于第 2 点,我尝试了不同版本的 ' target="_blank" 但它不起作用。我的猜测是我对引号做错了。

#E.g.: 
<a href=' + data + ' target='_blank'>' + 'PanelApp' + '</a>' ;}"

我也尝试过使用双引号(target="_blank")但没有识别它们(我在 JS 方面的经验为零)

这是应用程序的一个示例:

library(shiny)
library(DT)
#devtools::install_github('jbryer/DTedit')
library(DTedit)

ui = fluidPage(
  h3("How can I have all the links in one column separated by <br> ?"),
  mainPanel(
    shiny::uiOutput("mytable")
  )
)

server = function(input, output){

  #dataframe
  mydata <- data.frame(Gene = c("GBE1", "KMT2D"),
                       Metric = c(10, 20))

  ## Add hyperlinks
  mydata$Decipher <- paste0("https://decipher.sanger.ac.uk/gene/", mydata$Gene, "#overview/protein-info")
  mydata$PanelApp <- paste0("https://panelapp.genomicsengland.co.uk/panels/entities/", mydata$Gene)

  #render table
  DTedit::dtedit(input, output,
                 name = 'mytable',
                 thedata = mydata,
                 datatable.options = list(
                   columnDefs = list(
                     list(targets= 2, 
                          render = JS("function(data){return '<a href=' + data + '>' + 'PanelApp' + '</a>' ;}")),
                     list(targets= 3, 
                          render = JS("function(data){return '<a href=' + data + '>' + 'Decipher' + '</a>' ;}"))
                     )
                   )
                 )
  }

shinyApp(ui = ui, server = server, options = list(height = 1080))

任何人都可以在这里阐明一下吗?

谢谢你!!

标签: hyperlinkshinydatatables

解决方案


推荐阅读