Для двух использованных вами способов, <button>
наверняка не будет работать, поскольку событие «click» возвращает строку, и с ней ничего не делается.
Проблема с <a href="{{ Download() }}">
является то, что он работает, когда компонент генерируется.Поэтому значение Blob
, которое было создано, скорее всего, будет пустым.
В приведенном ниже коде я изменил логику, чтобы обновлять элемент «a» при щелчке по нему.Остальные остались прежними.
App.controller('Forumlaire_Controller', function ($scope, Shared_Service) {
$scope.Download = function() {
var a = document.getElementById("downloadLink"),
url = Shared_Service.Service_download();
a.href = url;
a.target = "_blank";
a.download = "filename.txt";
}
})
.config( function($compileProvider) {
$compileProvider.aHrefSanitizationWhitelist(/^\s*(|blob|):/);
});
App.factory('Shared_Service', function($q) {
return {
Service_download: function() {
var url = $window.URL || $window.webkitURL;
var data = $('#copy_Output_logs').text();
console.log($('#copy_Output_logs').text()) // On ng-click the text showup correctly
console.log(url.createObjectURL(new Blob([data], { type: 'text/plain' }))); //Via ng-click the url generates correctly in the console.
return url.createObjectURL(new Blob([data], { type: 'text/plain' }));
}
}
});
Что касается HTML
<a href="#" id="downloadLink" ng-click="Download()">Download</a>