Source: directives/botao-leitura-arquivo/botao-leitura-arquivo.js

/**
 * @ngdoc directives
 * @name botao-Leitura-Arquivo
 * @module s4c.directives.botaoLeituraArquivo.botaoLeituraArquivo
 * 
 * @description `botaoLeituraArquivo` Inclui a opção de anexar arquivo
 *              
 *              
 * 
 * @example <botao-leitura-arquivo></botao-leitura-arquivo>
 *
 */
(function () {
    'use strict';

    botaoLeituraArquivo.$inject = [
        'BotaoLeituraArquivo'
    ];

    function botaoLeituraArquivo(BotaoLeituraArquivo) {
        return {
            templateUrl: 'app/directives/botao-leitura-arquivo/botao-leitura-arquivo.html',
            link: function ($scope, $elem, $attrs) {
                $scope.res = $scope.$root.res;
                
		       /**
		        *
		        * Abre a janela para selecionar o arquivo 
		        *
		        * @method abrirUpload
				*        
		        *
		        */                  
                $scope.abrirUpload = function (e) {
                    var input = $elem.find('input[type="file"]');
                    e.stopPropagation();
                    input.attr('value', '');
                    input.click();
                };

		       /**
		        * Faz a conversão do arquivo para binario para poder ser lido na tela 
		        *
		        * @method uploadImage
				*        
		        * @param ctx {Object} Arquivos selecionados
				*               
		        */   
                $scope.uploadImage = function (ctx) {
                    ctx = ctx.target;
                    console.log(ctx);
                    $elem.find('.nomeArquivo').text(ctx.name);
                    var files = ctx.files;
                    var i, f;
                    for (i = 0, f = files[i]; i != files.length; ++i) {
                        var reader = new FileReader();
                        var name = f.name;
                        reader.onload = function (e) {
                            var data = e.target.result;

                            var workbook = XLSX.read(data, { type: 'binary' });

                            workbook.Custprops.name = name;

                            BotaoLeituraArquivo.getInstance($attrs.id).trigger('upload', workbook);
                        };
                        reader.readAsBinaryString(f);
                    }
                };
            }
        };
    }

    angular.module('s4c.directives.botaoLeituraArquivo', [])
        .directive('botaoLeituraArquivo', botaoLeituraArquivo);
}());