4
respostas

element[0] não está claro para mim

Não ficou claro para mim por que depois de element eu tenho que informar que é o elemento "[0]". Se trata de um array?

4 respostas

Fala ai Einstein, já faz tempo que fiz o curso então não lembro como está o código completo, mas, sobre sua dúvida, foi necessário informar [0] para acessar a posição 0 do array, ou seja, acessar o primeiro item (arrays começam contando em 0).

Se você não passar os colchetes e índice estaria acessando o array completo.

Espero ter ajudado.

Deixa eu colar o código aqui para ficar mais fácil a ajuda:

Na diretiva ele colocou assim:

angular.module('minhasDiretivas', [])

//Outros códigos

.directive('meuFocus', function(){
    var ddo = {};
    ddo.restrict = "A";
    ddo.link = function(scope, element) {
        scope.$on('fotoCadastrada', function(){
            element[0].focus();
        });
    };
    return ddo;
})

A dúvida é a seguinte: Porquê ele está colocando um array no element e onde ele declarou esse array.

No HTML ele chama a diretiva assim:

<a href="/" class="btn btn-primary" meu-focus>Voltar</a>

Fala ai Einstein, como faz muito tempo que fiz o curso, não lembro nada dos códigos referente ao mesmo, vou pedir para o Flávio (autor do curso) me ajudar aqui e ele já responde.

O element não é um elemento do DOM, é um Query Object. Ele encapsula o elemento do DOM. Para termos acesso ao elemento do DOM encapsulado por ele, precisamos fazer elemento[0]. Se você já trabalhou com jQuery é a mesma coisa. Parece que o elemento é um array, mas não. É simplesmente um wrapper.