Don't get it working...
Opened this issue · 2 comments
Hi,
Can you please help? I am trying to implement the filesaver, but can't get it working. Nothing happens when I click the Download button.
I have the following defined in my index.html :
<script type="text/javascript" src="js/angular.min.js"></script>
<script type="text/javascript" src="js/angular-sanitize.min.js"></script>
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/angular-file-saver/dist/angular-file-saver.js"></script>
<script type="text/javascript" src="js/angular-file-saver/dist/angular-file-saver.bundle.js"></script>
<script type="text/javascript" src="app/app.js"></script>
The textarea in index.html looks as follows:
<div class="wrapper" ng-controller="FileSaveCtrl as vm">
<textarea
ng-model="vm.val.text"
name="textarea" rows="5" cols="20">
Hey ho let's go!
</textarea>
<a href="" class="btn btn-dark btn-small" ng-click="vm.download(vm.val.text)">
Download
</a>
</div>
The app.js is as follows:
var app = angular.module('psApp', [
"ngSanitize",
"ngFileSaver"
]);
app.controller('FileSaveCtrl', ['$scope', 'FileSaver', 'Blob', function FileSaveCtrl($scope, FileSaver, Blob) {
$scope.val = {
text: 'Hey ho lets go!'
};
$scope.download = function(text) {
var data = new Blob([text], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(data, 'text.txt');
};
}]);
@eugenevk, it looks like the issue is related to mixing "attach to $scope
" style with controller as
syntax. Either remove the controller as
syntax from your view or modify your controller so that it properly implements the controller as
syntax.
@eugenevk, @merrillmatt is right. In your case, the view template should look like
<div class="wrapper" ng-controller="FileSaveCtrl">
<textarea
ng-model="val.text"
name="textarea" rows="5" cols="20">
Hey ho let's go!
</textarea>
<a href="" class="btn btn-dark btn-small" ng-click="download(val.text)">
Download
</a>
</div>
P.S: There is no need to include angular-file-saver.js
if angular-file-saver.bundle.js
is included already.
angular-file-saver.bundle.js
= angular-file-saver.js
+ polyfills (Blob.js, FileSaver.js)