Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Retirando a mensagem de sucesso da tela

Olá, gostaria de saber como poderia usar uma função para mostrar a mensagem de sucesso (ou de erro) para o usuário por um tempo e depois ela sumir. Tem as funções setTimeOut e setInterval, porém não sei onde declararia essa funcionalidade, e nem como faria isso.

E também gostaria de saber como poderia estender a mensagem de sucesso de uma página para outra , por exemplo:

$scope.submeter = function () {
        if ($scope.formulario.$valid) {
          cadastroFoto.cadastra($scope.foto)
            .then(function (retorno) {
              $scope.mensagem = retorno.mensagem
              window.history.back()
            })
            .catch(function (error) {
              $scope.mensagem = error.mensagem
            })
        };

Notem que estou usando history.back(), então o meu usuário volta para a lista de fotos, eu gostaria de saber se tem como eu passar a mensagem, seja de alteração, ou inclusão, para a página que o meu usuário. Não sei se o timer ajudaria nisso, mas acho que não, pois são controllers diferentes.

De qualquer forma qualquer ajuda é bem vinda!

Att, Pedro

1 resposta
solução!

Isso que você quer fazer com a mensagem de sucesso ou erro se chama "Toast".

Se isso fosse um HTML normal , você conseguiria fazer isso usando CSS, veja os exemplos abaixo:

http://jsfiddle.net/Q9kYa/

http://jsfiddle.net/R2q2Y/2/

No curso de HTML 5 tem explicações de como fazer efeitos.

No caso do Angular, para exibir/ocultar elementos você pode usar as diretivas ng-show e ng-hide. Eu não testei, mas talvez seja necessário ter duas divs, uma com a mensagem de sucesso, outra de erro.

Uma outra alternativa seria instalar algum módulo do Angular que faça o Toast sem a necessidade de ter o trabalho acima. Eu achei este dois:

http://tamerayd.in/ngToast/#

https://foxandxss.github.io/angular-toastr/