diff --git a/src/js/ngFileModel-directive.js b/src/js/ngFileModel-directive.js new file mode 100644 index 0000000..7e94485 --- /dev/null +++ b/src/js/ngFileModel-directive.js @@ -0,0 +1,43 @@ +angular.module('focaDirectivas') + .directive('ngFileModel', ['$parse', function ($parse) { + return { + restrict: 'A', + link: function (scope, element, attrs) { + var model = $parse(attrs.ngFileModel); + var isMultiple = attrs.multiple; + var modelSetter = model.assign; + element.bind('change', function () { + var promesas = []; + angular.forEach(element[0].files, function (item) { + promesas.push(new Promise(function(resolve, reject) { + var reader = new FileReader(); + reader.readAsDataURL(item); + reader.onload = function(){ + var value = { + name: item.name, + url: URL.createObjectURL(item), + size: item.size, + base64: reader.result, + _file: item + }; + resolve(value); + }; + reader.onerror = function (error) { + reject(error); + }; + })); + }); + + Promise.all(promesas).then(function(values){ + scope.$apply(function () { + if (isMultiple) { + modelSetter(scope, values); + } else { + modelSetter(scope, values[0]); + } + }); + }); + }); + } + }; + }]); \ No newline at end of file