指令创建[下载]按钮
Directive to create a[download] button
我得到了帮助保存json作为文件在客户端这里。代码非常短,就像这个小提琴。
var a = document.createElement('a');
a.download = "backup.json";
a.href = url;
a.textContent = "Download backup.json";
document.getElementById('content').appendChild(a);
我试图创建一个angularjs指令,以便它调用范围内的方法来获取数据。沿着这条线。
module.directive('myDownload', function ($compile) {
return {
restrict:'E',
scope:{ getData:'&getData'},
link:function (scope, elm, attrs) {
elm.append($compile(
'<a class="btn" download="backup.json"' +
'href=' + scope.getData() + '>' +
'Download' +
'</a>'
)(scope));
}
};
});
这行不通。如何将链接小提琴变成指令?
这样怎么样:
下面是指令代码:
module.directive('myDownload', function ($compile) {
return {
restrict:'E',
scope:{ getUrlData:'&getData'},
link:function (scope, elm, attrs) {
var url = URL.createObjectURL(scope.getUrlData());
elm.append($compile(
'<a class="btn" download="backup.json"' +
'href="' + url + '">' +
'Download' +
'</a>'
)(scope));
}
};
});
控制器:
module.controller('MyCtrl', function ($scope){
var data = {a:1, b:2, c:3};
var json = JSON.stringify(data);
$scope.getBlob = function(){
return new Blob([json], {type: "application/json"});
}
});
我最后在这里试图解决一个类似的问题。在我的Angular页面中,我有一个通过Ajax检索的JSON,它被渲染为HTML,但我希望"原始"JSON可以通过链接下载。
OP和大多数人投票的方法的问题是HTML DOM是在你的控制器中被操纵的,这有点违背了使用MVVM的目的。我认为你做这一切的原因是因为Angular阻止了blob链接的创建(通过在生成的blob URL前加上'unsafe:')。
幸运的是,Angular提供了一种将特定URL前缀应用白名单的方法,这样当你使用URL.createObjectURL()
时它就不会被阻止了。在本例中,我们包括blob
这是我对它在JSFiddle上运行的看法
相关文章:
- 链接/按钮从子文件夹下载文件--浏览器只是浏览
- 从Web服务器下载图像按钮单击使用JavaScript
- Wordpress在播放器旁边播放一个自定义的下载按钮,而不是下载
- 点击jQuery按钮下载文件
- 如何将我自己的按钮连接到下载库
- 使用音频.js单击按钮下载音频
- 单击按钮并将其下载为图像格式时,如何使用引导模式弹出窗口显示D3图表
- 如何使链接/按钮可下载
- Chocolat.JS-将标题转换为下载按钮-将span类内容移动到href中
- 使用jQuery单击按钮下载图像
- 根据移动/桌面操作系统在网站上显示不同的按钮/下载链接
- javascript按钮下载文件
- 按钮下载PDF文件
- 使用委托点击按钮下载文件JQuery
- 通过按钮下载图片
- CRM通过按钮下载txt文件
- 如何使用angularjs通过点击按钮下载图像到本地
- 试图从UploadPanel中的按钮下载文件.JS函数InitializeRequest不会被触发
- 如何在asp.net中点击按钮下载html文件
- 如何通过一个下载按钮下载所有链接