Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Obtenção de dados de uma diretiva

Boa noite, eu criei uma diretiva para um filtro,

var app = angular.module('filtroDirectives', []);

app.directive('filtroCanaisDirective', ['$http', function($http) {
    return {
        restrict: 'AE',
        transclude: true,
        templateUrl: '/app/filtros/templates/filtro-canal.html',
        controller: function($scope, $attrs) {
            $scope.canais = [];
            $http({
                method: 'POST',
                url: '/Canais/GetCanais',
                headers: {
                    "Accept": "application/json;odata=verbose"
                }
            })
            .success(function(data) {
                $scope.canais = fillListChannels(data.d.results);
            })
            .error(function(error){
                console.log("Erro: Erro ao carregar canais.");    
                console.log(error);
            });

            function fillListChannels(listChannels) {

                var listChannelModel = [];

                for (var i = 0; i < listChannels.length; i++) {
                    listChannelModel.push(new fillChannelModel(listChannels[i]));
                }

                return listChannelModel;
            }

            function fillChannelModel(channel) {

                var self = {};
                self.Id = channel.Id;
                self.FirstName = channel.FirstName;

                return self;
            }
           }
       }
}]);

E no arquivo html eu fiz a chamada dela

<filtro-canais-directive lista="Canais"></filtro-canais-directive>

A minha dúvida se dá no momento onde eu vou obter os dados selecionados no html da minha diretiva. Na controladora eu obtenho da seguinte forma,

var scopeChannel = angular.element($("#filtroCanal")).scope();

Porém acredito que não seja da melhor forma essa obtenção de valores, visto que estou capturando os valores pelo DOM do elemento na controladora.

Desde já agradeço à ajuda.

3 respostas
solução!

Parabéns pela solução. Outra forma que você pode experimentar, em teoria, é a comunicação entre a diretiva e o controller ser através de eventos. A diretiva dispara o evento e o pai responder, no caso, tendo acesso ao dado disponibilizado pela diretiva.

Obrigado Flávio. É bem verdade sim, posso criar um evento para cada diretiva(filtro) e no link eu recupero o valor no DOM do elemento e salvo em um atributo comum para a diretiva e a controladora visualizarem, em seguida faço minha requisição com os valores atualizados. Seria, em teoria, a sua contextualização, correto?

Exatamente.