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

ReferenceError: servicoCadastroFotos is not defined

Nao consegui identificar o erro do meu codigo aqui =(

meus-servicos.js

angular.module('meusServicos', ['ngResource'])
  .factory('recursoFoto', function($resource) {

    return $resource('v1/fotos/:fotoId', null, {
      atualiza : {
        method : 'PUT'
      }
    });
  })

  .factory('servicoCadastroFotos', function(recursoFoto, $q) {

    var servico = {};

    servico.cadastrar = function(foto) {
      return $q(function(resolve, reject) {
        if(foto._id) {

          recursoFoto.update({fotoId: foto._id}, foto, function() {
            resolve({
              mensagem: foto.titulo + ' atualizada com sucesso.',
              inclusao: false
            });
          }, function(erro) {
            console.log(erro);
            reject({
              mensagem: 'Nao foi possivel alterar a foto ' + foto.titulo
            });
          });

        } else {

          recursoFoto.save(foto, function() {
            resolve({
              mensagem: 'Foto ' + foto.titulo + ' incluida com sucesso.',
              inclusao: true
            });
          }, function(erro) {
            console.log(erro);
            reject({
              mensagem: 'Nao foi possivel incluir a foto ' + foto.titulo
            });
          })

        }
      });
    };

    return servico;

  });

foto-controller.js

angular.module('alurapic').controller('CadastroFoto', function($scope, recursoFoto, $routeParams) {

  $scope.foto = {};
  $scope.exibe = false;

  $scope.mensagem = '';

  if($routeParams.fotoId) {
      recursoFoto.get({fotoId : $routeParams.fotoId}, function(foto) {
        $scope.foto = foto;
      }, function(erro) {
        console.log(erro);
        $scope.mensagem = 'Nao foi possivel obter a foto ' + $scope.foto.titulo;
      });
  };


  $scope.submeter = function() {
    if($scope.cadastrarFoto.$valid) {

      servicoCadastroFotos.cadastrar($scope.foto)
        .then(function(dados) {
          $scope.mensagem = dados.mensagem;
          if(dados.inclusao) {
            $scope.foto = {};
          }
        })
        .catch(function(dados) {
          $scope.mensagem = dados.mensagem;
        });

    };
  };

});
4 respostas

Logico que nao vai funcionar, eu esqueci de injetar o serviço cadastroDeFotos em foto-controller.js

.controller('FotoController', function($scope, recursoFoto, $routeParams, cadastroDeFotos)
solução!

O nome do serviço que você usou foi servicoCadastroFotos. Em foto controller você não injetou o serviço.

Mas eu não lembro de usar esse nome de serviço. Se for mudar os nomes cuidado, tem que se garantir de que vai alterar em todos os outros lugares. Vou além e digo que alunos que mudam os nomes se enrolam no projeto. Sugiro alterar paravos nomes que quiser só depois de terminar o projeto. Se um erro acontecer você terá certeza que não é da aplicação e é erro seu, facilitando assim encontrar o problema.

Beleza Flavio, valeu pela dica!

Sucesso e bom estudo Bruno!