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

3. Tornando nossa aplicação mais próxima de uma aplicação real

Não entendi exercício abaixo:

1) angular.module('alurapic').controller('a', function($http, $scope) {});

2) angular.module('alurapic').controller('b', $http, $scope) {};

3) angular.module('alurapic').controller('c', function($scope, $http) {});

4) angular.module('alurapic').controller('d', function($scope, http) {});

Todos estão incompletos e a alternativa 3 é considera correta, mas a 4 não e elas são iguais...

2 respostas
solução!

Tem certeza que são iguais? :)

Tem certeza que todos estão incompletos? :)

Vejamos:

1) angular.module('alurapic').controller('a', function($http, $scope) {});

Esta correta, porque para injetarmos artefatos precisamos passar o nome dos artefatos que serão injetados na função passada como segundo parâmetro para a função controller.

3) angular.module('alurapic').controller('c', function($scope, $http) {});

Correto, apesar de parecida com 1, ela inverte a ordem dos parâmetros. Quem saca de JavaScript pode achar que vai dar erro, mas não dá porque angular se baseia no nome do parâmetro e não na posição.

Agora vamos para as erradas:

2) angular.module('alurapic').controller('b', $http, $scope) {};

Errada, os artefatos que serão injetados não foram passados como parâmetros para function, faltou function ($http, $scope) {}.

Por fim,

4) angular.module('alurapic').controller('d', function($scope, http) {});

Ela até injeta corretamente $scope, mas não injeta $http porque o parâmetro passado foi http e não $http.

Ok. É uma atividade genérica. Estava pensando que deveria aplicar o FotosController.

Obrigada!