Commit ee22e0723d1cb8dfddcdd9517705745c65def8da

Authored by Jose Pinto
1 parent 5ff1941678
Exists in master and in 1 other branch develop

linea al final

Showing 1 changed file with 2 additions and 1 deletions   Show diff stats
src/js/ngFileModel-directive.js
1 angular.module('focaDirectivas') 1 angular.module('focaDirectivas')
2 .directive('ngFileModel', ['$parse', function ($parse) { 2 .directive('ngFileModel', ['$parse', function ($parse) {
3 return { 3 return {
4 restrict: 'A', 4 restrict: 'A',
5 link: function (scope, element, attrs) { 5 link: function (scope, element, attrs) {
6 var model = $parse(attrs.ngFileModel); 6 var model = $parse(attrs.ngFileModel);
7 var isMultiple = attrs.multiple; 7 var isMultiple = attrs.multiple;
8 var modelSetter = model.assign; 8 var modelSetter = model.assign;
9 element.bind('change', function () { 9 element.bind('change', function () {
10 var promesas = []; 10 var promesas = [];
11 angular.forEach(element[0].files, function (item) { 11 angular.forEach(element[0].files, function (item) {
12 promesas.push(new Promise(function(resolve, reject) { 12 promesas.push(new Promise(function(resolve, reject) {
13 var reader = new FileReader(); 13 var reader = new FileReader();
14 reader.readAsDataURL(item); 14 reader.readAsDataURL(item);
15 reader.onload = function(){ 15 reader.onload = function(){
16 var value = { 16 var value = {
17 name: item.name, 17 name: item.name,
18 url: URL.createObjectURL(item), 18 url: URL.createObjectURL(item),
19 size: item.size, 19 size: item.size,
20 base64: reader.result, 20 base64: reader.result,
21 _file: item 21 _file: item
22 }; 22 };
23 resolve(value); 23 resolve(value);
24 }; 24 };
25 reader.onerror = function (error) { 25 reader.onerror = function (error) {
26 reject(error); 26 reject(error);
27 }; 27 };
28 })); 28 }));
29 }); 29 });
30 30
31 Promise.all(promesas).then(function(values){ 31 Promise.all(promesas).then(function(values){
32 scope.$apply(function () { 32 scope.$apply(function () {
33 if (isMultiple) { 33 if (isMultiple) {
34 modelSetter(scope, values); 34 modelSetter(scope, values);
35 } else { 35 } else {
36 modelSetter(scope, values[0]); 36 modelSetter(scope, values[0]);
37 } 37 }
38 }); 38 });
39 }); 39 });
40 }); 40 });
41 } 41 }
42 }; 42 };
43 }]);
43 }]);