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

/**
 * @ngdoc directives
 * @name botao-Leitura-Arquivo.Service
 * @module s4c.directives.botaoLeituraArquivo.botaoLeituraArquivoService
 * 
 * @description `BotaoLeituraArquivo` Classe responsável pela comunicação entre o controller e o Backend
 *              
 *              
 */
(function () {
    angular.module('s4c.directives.botaoLeituraArquivo')
        .factory('BotaoLeituraArquivo', BotaoLeituraArquivo);

    function BotaoLeituraArquivo() {
        var service = {
            _botoes: {},
            getInstance: getInstance
        };

        function getInstance(id) {
            if (!service._botoes[id]) {
                service._botoes[id] = new Service()
            }

            return service._botoes[id];
        }

        function Service() {
            var self = this;

            angular.extend(self, {
                on: on,
                trigger: trigger,
                events: {
                    'upload': []
                }
            });

            function on(eventName, callback) {
                self.events[eventName].push(callback);
            }

            function trigger(eventName, args) {
                _.each(self.events[eventName], function (callback) {
                    callback(args);
                });
            }
        }

        return service;
    }
}());