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

Aplicação com AngularJS 1.x não funciona sem o array vazio

Minha aplicação em Angular JS não funciona se eu remover o array[] vazio logo após o nome do meu módulo 'alurapic'.

Preciso de ajuda para entender o que houve. Alguém sabe o porque disso acontecer?

angular.module('alurapic', []).controller('FotosController', function($scope){

    $scope.foto = {
        titulo: 'Harley Roadstar',
        url: 'http://www.moto.com.br/img/2016/11/17/img113257-1479413331-v580x435.jpg',
    }

});
5 respostas

Olá Univalle, tudo bem ?

Quando usamos angular.module('alurapic', []) estamos dizendo ao Angular que queremos criar um módulo novo, usando o array pra indicar quais são suas dependências.

Dessa forma, o ideal geralmente em um controller é usar apenas angular.module('alurapic').controller('FotosController', function(){ ... }); pra dizer que queremos definir esse controller pertencente a um módulo já existente, nesse caso o módulo principal da aplicação.

Verifique nas ferramentas de dev do seu browser se na sua página o js que cria o módulo principal (provavelmente o main.js) está sendo corretamente importado, e se não aponta nenhum problema. As vezes isso pode ocorrer caso o js que registra o módulo esteja com problemas. Assim como o módulo não é registrado da forma correta, quando tentamos definir o controller como pertencente a esse módulo - angular.module('alurapic'). controller(..) - ele não funciona, rodando apenas se definimos o controller registrando um módulo - angular.module('alurapic', []).controller(...).

Espero ter ajudado. Abraço!

Você parece não ter criado o main.js ou não o importou corretamente.

Olá.

Mas se eu estivesse importando o main.js de forma errada, a aplicação não estaria nem funcionando correto?

O que não acontece.

A aplicação roda normal quando tenho isso:

angular.module('alurapic', []).controller('FotosController', function($scope){}...

Agora quando removo o array[], como a seguir, ela apresenta o erro angular.js:38 Uncaught Error...

angular.module('alurapic').controller('FotosController', function($scope){}...
angular.js:38 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.15/$injector/modulerr?p0=alurapic&p1=Error%…uc%20(http%3A%2F%2Flocalhost%3A3000%2Fjs%2Flib%2Fangular.min.js%3A18%3A179)
    at angular.js:38
    at angular.js:4138
    at r (angular.js:323)
    at g (angular.js:4099)
    at ab (angular.js:4025)
    at d (angular.js:1452)
    at uc (angular.js:1473)
    at Jd (angular.js:1367)
    at angular.js:26304
    at HTMLDocument.a (angular.js:2762)

Infelizmente acho que não tem como mandar uma imagem aqui para verem o erro no console.

solução!

Isso acontece porque seu main.js é quem deveria passar o array. Como ele não foi carregado ou esta errado você teve que indevidamente ter colocar o array no arquivo do controller.

Mais de 1000 alunos passaram dessa parte sem problema algum fazendo exatamente como mostro no video.

Verifique seu main.js.

A blz. Saquei. Comparei com o projeto que está disponível para download. Entendi. Estava fazendo esse código no main.js e não no controller.

Valew.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software