首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据追加到指令元素

将数据追加到指令元素
EN

Stack Overflow用户
提问于 2016-06-17 23:53:40
回答 2查看 57关注 0票数 0

构建一个数据表,其中有两个主要功能

  1. 对数据表排序
  2. 将排序表中可查看的内容下载到CSV中

到目前为止,能够对表进行排序,并可以使用jQuery下载CSV。然而,使用jQuery并不是角度的方式,所以需要使用纯JS的能力。

指令"exportToCsv"

代码语言:javascript
复制
angular.module('myApp')
  .directive('exportToCsv', function(){
    return {
      restrict: 'A',
      link: function (scope, element, attrs) {
        var el = element[0];
        element.bind('click', function(e){
            var table = e.target.nextElementSibling;
            var csvString = '';
            for(var i=0; i<table.rows.length;i++){
                var rowData = table.rows[i].cells;
                for(var j=0; j<rowData.length;j++){
                    csvString = csvString + rowData[j].innerHTML + ",";
                }
                csvString = csvString.substring(0,csvString.length - 1);
                csvString = csvString + "\n";
            }
            csvString = csvString.substring(0, csvString.length - 1);
         // USING JQUERY ABLE TO DOWNLOAD THE CSV
         var csvExport = $('<a/>', {
                href:'data:application/octet-stream;base64,'+btoa(csvString),
                download:'report.csv'
          }).appendTo('body');
          console.log('variable jqueryExport', csvExport);
            csvExport[0].click();
            csvExport.remove();

        // UNABLE TO DOWNLOAD CSV USING ANGULAR ONLY
        var csvExport = ('<a/>',{
             href:'data:application/octet-stream;base64,'+btoa(csvString),
             download:'report.csv'
         });
        // Seems like all the answers want to append to HTML rather than it's own node
        element.append('csvExport');
    }
  };
});

代码语言:javascript
复制
...
<button export-to-csv>Download</button>
<table>...</table>
...

如何将csvExport附加到它的元素中,下载,然后删除它?

EN

回答 2

Stack Overflow用户

发布于 2016-06-18 00:26:25

我可能会使用一个动态吴瑞夫,它将自己设置为csv的值。

类似于:

代码语言:javascript
复制
<table id="data-to-download">...</table>
<a ng-href="{{ dataUri('#data-to-download') }}" download="report.csv">Download</a>

然后,像上面那样实现dataUri,使用传入的选择器('#data-to-download')。

票数 0
EN

Stack Overflow用户

发布于 2016-06-20 18:42:38

能够将下载链接附加到指令元素。

角向

代码语言:javascript
复制
var csvExport = angular.element('<a/>');
csvExport.css({display: 'none'});
angular.element(document.body).append(csv);

csvExport.attr({
  href: 'data:application/octet-stream;base64,'+btoa(csvString),
  target: '_blank',
  download: 'report.csv'
})[0].click();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37891903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档