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

Estou recebendo o erro cadastroDeFoto is undefined. Não consegui encontrar o erro.

// Código do meus-servicos.js

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

return $resource('v1/fotos/:fotoId', null, { update: { method: 'PUT' } }); }) .factory('cadastroDeFotos', 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' + foto.titulo + ' atualizada com sucesso.', inclusao: false }); }, function(erro){ console.log(erro); reject("Não foi possível alterar a foto " + foto.titulo); }); }else{ recursoFoto.save(foto, function(){ resolve({ mensagem: 'Foto' + foto.titulo + ' incluída com sucesso.', inclusao: true }) }, function(erro){ console.log(erro); reject({ mensagem: 'Não foi possível incluir a foto.' }); }); } }); }; return servico; });

// Código do controller foto-controller.js - Os comentários são para estudo

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

$scope.foto = {}; $scope.mensagem ='';

if($routeParams.fotoId){ /Sintaxe com $resource/ recursoFoto.get({fotoId : $routeParams.fotoId}, function(foto){ $scope.foto = foto; }, function(erro){ console.log(erro); $scope.mensagem = 'Não foi possível obter a foto.'; }); /Sintaxe com $htpp $http.get('v1/fotos/' + $routeParams.fotoId) .success(function(foto){ $scope.foto = foto; }) .error(function(erro){ console.log(erroe); $scope.mensagem = 'Não foi possível obter a foto.'; }); / }

$scope.submeter = function(){

if($scope.formulario.$valid){

cadastroDeFotos.cadastrar($scope.foto) .then(function(dados){ $scope.mensagem = dados.mensagem; if(dados.inclusão) $scope.foto = {}; $scope.focado = true; }) .catch(function(dados){ $scope.mensagem = dados.mensagem; });

/* if($scope.foto._id){ //Antiga sintaxe sem utilizar o serviço com promessa criada.

//Sintaxe com $resource recursoFoto.update({fotoId : $scope.foto._id}, $scope.foto, function(){ $scope.mensagem = 'Foto atualizada com sucesso!'; }, function(erro){ $scope.mensagem = 'Foto não pode ser atualizada'; console.jog(erro); });

//Sintaxe com $http $http.put('v1/fotos/' + $scope.foto._id, $scope.foto) .success(function(){ $scope.foto = {}; $scope.mensagem = 'Foto atualizada com sucesso!'; }) .error(function(){ $scope.mensagem = 'Foto não pode ser atualizada'; console.jog(error); });

} else {

//Sintaxe com $resource recursoFoto.save($scope.foto, function(){ $scope.foto = {}; $scope.mensagem = 'Foto cadastrada com sucesso!'; }, function(erro){ $scope.mensagem = 'Foto não cadastrada'; console.jog(erro); });

//Sintaxe com $http $http.post('v1/fotos', $scope.foto) .success(function(){ $scope.foto = {}; $scope.mensagem = 'Foto cadastrada com sucesso!'; }) .error(function(){ $scope.mensagem = 'Foto não cadastrada'; console.jog(error); });

} */

} };

});

3 respostas

Olá! Seu código esta ilegível porque não usou a formatação de código.

Peço que poste novamente clicando em inserir código. Faça isso com cada parte de código que postar.

Aguardo seu novo post.

.

solução!

Olá gabriel, você esqueceu de colocar o parâmetro cadastroDeFotos na declaração do seu controller:

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

tente assim:

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