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

Arrow function em angular.module.controller

Estou com uma pequena dúvida... Por qual motivo que quando eu implemento o código abaixo, o controller deixa de funcionar

angular.module( 'NomeDoModulo' ).controller( 'NomeDoController', ( $scope, $http, $resource ) => {     
    //codigo omitido
});

Ou seja, no segundo parâmetro do método controller, ao invés de declarar uma função eu faço o uso de arrow function, porém o meu código não funciona, e assim que altero para:

angular.module( 'NomeDoModulo' ).controller( 'NomeDoController', function( $scope, $http, $resource ) {     
    //codigo omitido
});

ele volta a funcionamento.

Alguém sabe me dizer o motivo disso? Imagino que possa ser por conta do escopo de arrow functions, porém não ficou muito claro pra mim o motivo de não funcionar mesmo que seja por conta do escopo.

3 respostas
solução!

Oi Yuri! Não pode usar arrow function porque .controller é uma construction function. Daí o this interno precisa ser dinâmico e não estático ( léxico) .

Se quiser saber com mais detalhes:

http://www.codelord.net/2016/05/05/using-es6-arrow-functions-in-angular-1-dot-x-plus-cheatsheet/

Abraço !

Ah, esta de parabéns por tentar usar os recursos que aprendeu no curso de es6!

Obrigado Flávio, então realmente é por conta do dinamismo do this... Obrigado, a propósito, o curso de es6 é uma Monalisa dos cursos. Parabéns ao senhor pela excepcional didática!

Obrigado Yuri! Meu objetivo sempre foi tornar o aluno um cangaceiro, porque ninja muita gente já é.

Sucesso e bom estudo!