I'm trying to display a list of files which the user selects using the input[type=file].
HTML
<div ng-app="myApp">
<div ng-controller="UploadFilesCtrl">
<input type="file" onchange="angular.element(this).scope().uploadFiles(this)" multiple />
<ul>
<li ng-repeat="name in filenames">
{{name}}
</li>
</ul>
<button ng-click="test()">PRINT</button>
</div>
</div>
JS
app = angular.module('myApp');
app.controller('UploadFilesCtrl', ['$scope', function($scope){
$scope.uploadFiles = function(element){
var files = element.files;
var filenames=[];
for (i=0; i<files.length; i++){
filenames.push(files[i].name);
}
$scope.files = files;
$scope.filenames = filenames;
console.log(files, filenames);
};
$scope.test = function(){
console.log($scope.files, $scope.filenames);
}
}]);
From some reason the list never gets updated.
The filenames
and files
variables in the $scope
never get updated outside of the uploadFiles
function (When I click the PRINT button after selecting file I get undefined).
Any ideas?
Thanks!
You don't need $scope.$apply()
...............................................................................................................................................................
Your codes are looking very nice. and it's should be working if you did my below thing.
But you have missed only one thing. but that's main thing.
I think you may be got this below error
Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to: Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
please verify in your browser console window, if you got this error,then Please try this
app = angular.module('myApp',[]);
instead of
app = angular.module('myApp');
You have missed empty sub models in main model('myApp',[]);
All other codes looks well.
Please see this fiddler Demo , Now your selected files names are displayed when you click print button.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With