Olá, eu usei o SweetAlert antes com sucesso, mas hoje tentei usá-lo com o Ionic e estou com um problema.
Quando eu o uso assim, ele executa a função algo, mas não está esperando que o botão de confirmação seja pressionado:
$scope.something=function(){console.log('test')};
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something());
Quando eu uso assim, não funciona de jeito nenhum:
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },function(){console.log('test')});
Alguma ideia?
Eu encontrei algo semelhante no angular.
$scope.deleteSomething = function () {
swal({ title: 'Are you sure?', text: 'Your will not be able to recover this thing!',
type: 'warning',
showCancelButton: true, confirmButtonColor: '#DD6B55',
confirmButtonText: 'Yes, delete it!', closeOnConfirm: false },
function () {
// Code to delete something
swal('Deleted!', 'It was deleted.', 'success');
// The success alert only shows for a split second and is gone
}
});
Parece ter algo a ver com tê-lo em uma função chamada no escopo ou apenas em um callbak, mas o que eu sei :)
Se eu descobrir, postarei aqui. Parece que algo semelhante está acontecendo aqui: https://github.com/t4t5/sweetalert/issues/52
Pode estar enganado, mas parece que você precisa remover os parênteses em $ scope.something () como a chamada de volta, como
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something);
Quando você inclui os parênteses, o interpretador JS está executando $ scope.something () e atribuindo o resultado como retorno de chamada, por isso não está esperando que o botão de confirmação seja pressionado. Em seu segundo exemplo, você está passando a definição da função (o mesmo que apenas passando $ scope.something sem parênteses) e é por isso que está funcionando.
Obrigado, mas eu já tentei isso e não está fazendo nada
@ schris12 verifique o ngSweetAlert . talvez possa ajudar
O log do console deve funcionar, mas apenas no caso. Lembre-se de que você precisa chamar o Angular $ scope. $ Digest (); se você estiver usando outras bibliotecas para atualizar visualizações e escopos.
Portanto, se você estiver usando o alerta doce, certifique-se de que seu retorno de chamada seja semelhante a:
$scope.something=function(){
console.log('test');
// You might have something that updates your scope here
...
$scope.$digest();
};
swal({
title: 'True',
text: '',
type: 'success',
confirmButtonText: 'Next'
}, $scope.something);
@oitozero - ngSweetAlert funciona perfeitamente! obrigado!
@oitozero , ngSweetAlert funcionou para mim também. Obrigado!
Obrigado @blaiprat também pela dica e por ajudar a entender o problema.
@SeanPlusPlus @ruairitobrien
Incrível. : +1:
Acaba de lançar uma nova versão para refletir as mudanças no sweetalert (0.2.0).
Muito Obrigado.
Há pouco, ou mesmo um grande "mas" - se você chamar na janela de modelagem ativa, os botões não funcionarão.
Por favor, me diga como me livrar do flagelo?
Comentários muito úteis
O log do console deve funcionar, mas apenas no caso. Lembre-se de que você precisa chamar o Angular $ scope. $ Digest (); se você estiver usando outras bibliotecas para atualizar visualizações e escopos.
Portanto, se você estiver usando o alerta doce, certifique-se de que seu retorno de chamada seja semelhante a: