Erro que está ocorrendo ao tentar carregar uma foto.
angular.min.js:102 TypeError: Cannot read property '_id' of undefined
at http://localhost:3000/js/services/meus-servicos.js:16:19
at new u (http://localhost:3000/js/lib/angular.min.js:115:365)
at u (http://localhost:3000/js/lib/angular.min.js:115:344)
at new <anonymous> (http://localhost:3000/js/services/meus-servicos.js:15:14)
at Object.<anonymous> (http://localhost:3000/js/services/meus-servicos.js:14:23)
at Object.e [as invoke] (http://localhost:3000/js/lib/angular.min.js:36:315)
at Object.$get (http://localhost:3000/js/lib/angular.min.js:34:268)
at Object.e [as invoke] (http://localhost:3000/js/lib/angular.min.js:36:315)
at http://localhost:3000/js/lib/angular.min.js:38:110
at d (http://localhost:3000/js/lib/angular.min.js:36:13) <ng-view class="ng-scope">
Meu código está assim:
js/services/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 = new 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({
mensagem: '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 ' + foto.titulo
});
});
}
});
};
return servico;
});
js/controllers/foto-controller.js
angular.module('alurapic')
.controller('FotoController', function($scope, recursoFoto, $routeParams, cadastroDeFotos) {
$scope.foto = {};
$scope.mensagem = '';
if($routeParams.fotoId) {
recursoFoto.get({fotoId: $routeParams.fotoId}, function(foto) {
$scope.foto = foto;
}, function(erro) {
$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;
})
.catch(function(erro) {
$scope.mensagem = erro.mensagem;
});
}
};
});
index.html
<!DOCTYPE html>
<html lang="pt-br" ng-app="alurapic">
<head>
<meta charset="UTF-8">
<base href="/">
<meta name="viewport" content="width=device-width">
<title>Alurapic</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<link rel="stylesheet" href="css/efeitos.css">
<script src="js/lib/angular.min.js"></script>
<script src="js/lib/angular-animate.min.js"></script>
<script src="js/lib/angular-route.min.js"></script>
<script src="js/lib/angular-resource.min.js"></script>
<script src="js/main.js"></script>
<script src="js/controllers/fotos-controller.js"></script>
<script src="js/controllers/foto-controller.js"></script>
<script src="js/controllers/grupos-controller.js"></script>
<script src="js/services/meus-servicos.js"></script>
<script src="js/directives/minhas-diretivas.js"></script>
</head>
<body>
<div class="container">
<ng-view></ng-view>
</div> <!-- fim container -->
</body>
</html>