2
respostas

Desabilitando imagem com ng-click

Prezados,

preciso de ajuda por favor.

Quero usar uma img e não um botão juntamente com o ng-click. Quando o usuário clicar na imagem, quero que ela fique esmaecida, para que ele entenda que foi desativada.

Neste link http://stackoverflow.com/questions/28575962/ng-disabled-of-image-in-angularjs, foi mencionado que o ng-click ainda é acionado mesmo com ng-disable em uso.

Não consegui implantar a solução acima porque não uso button, apenas img.

Teriam outra opção?

Parte do HTML:

<img src="{{foto.url}}" alt="{{foto.titulo}}" ng-click="remover(foto)">

Parte do controller:

angular.module('alurapic').controller('FotosController', function ($scope, recursoFoto) {
    $scope.fotos = [];
    $scope.filtro = '';
    $scope.mensagem = '';

    recursoFoto.query(function(fotos) {
        $scope.fotos = fotos;
    }, function(erro) {
        console.log(erro);
    });

    $scope.remover = function(foto) {
        recursoFoto.delete({fotoId: foto._id}, function() {
            var indiceFoto = $scope.fotos.indexOf(foto);
            $scope.fotos.splice(indiceFoto, 1);
            $scope.mensagem = 'Foto ' + foto.titulo + ' removida com sucesso!!!';            
        }, function(erro) {
            $scope.mensagem = 'deu pau na exclusão, a casa caiu';
            console.log(erro);
        });
    };
});
2 respostas

Estava pesquisando e ao invés de utilizar ng-disable, acho que posso utilizar o stipPropagation em conjunto com preventDefault. O que ocorre é que, raras vezes, a execução ocorre em lote, em intervalo muito curto de tempo.

Alguém tem exemplo de uso desses eventos em conjunto?

José, pelo o que eu entendi, você quer clicar na imagem que deseja remover e colocá-la em destaque para o usuário saber que ela será removida, certo?

Mas você tem um problema a resolver antes, pois a lógica do seu controller removerá automaticamente a imagem assim que ela foi clicada.

Sendo assim, antes do aspecto estético, me parece que você precisará resolver primeiro a lógica do seu controller.

Eu posso ter entendido errado o que você esteja querendo, qualquer coisa me corrija.