Hola, he usado SweetAlert antes con éxito, pero hoy intenté usarlo con Ionic y tengo un problema.
Cuando lo uso así, ejecuta la función algo pero no está esperando a que se presione el botón de confirmación:
$scope.something=function(){console.log('test')};
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something());
Cuando lo uso así, no funciona en absoluto:
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },function(){console.log('test')});
¿Algunas ideas?
Me he encontrado con algo similar en 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 tener algo que ver con tenerlo en una función llamada en el alcance o simplemente tenerlo en un callbak, pero ¿qué sé yo? :)
Si lo averiguo, lo publicaré aquí. Parece que tal vez esté sucediendo algo similar aquí: https://github.com/t4t5/sweetalert/issues/52
Puede estar equivocado, pero parece que necesita eliminar los parens en $ scope.something () como la devolución de llamada, como
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something);
Cuando incluye los parens, el intérprete de JS ejecuta $ scope.something () y asigna el resultado como devolución de llamada, por lo que no está esperando a que se presione el botón de confirmación. En su segundo ejemplo, está pasando la definición de la función (lo mismo que pasar $ scope.something sin parens), por lo que está funcionando.
Gracias, pero ya lo intenté y no está haciendo nada.
@ schris12 comprobar ngSweetAlert . tal vez pueda ayudar
El registro de la consola debería funcionar, pero por si acaso. Recuerde que Angular necesita llamar a $ scope. $ Digest (); si está utilizando otras bibliotecas para actualizar vistas y ámbitos.
Entonces, si está usando una alerta dulce, asegúrese de que su devolución de llamada se vea así:
$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 como un encanto! ¡Gracias!
@oitozero , ngSweetAlert también funcionó para mí. ¡Gracias!
Gracias @blaiprat también por el consejo y ayudarnos a comprender el problema.
@SeanPlusPlus @ruairitobrien
Impresionante. : +1:
Acaba de lanzar una nueva versión para reflejar los cambios en sweetalert (0.2.0).
Muchas gracias.
Hay poco, o incluso un gran "pero": si llama a la ventana de modelado activa, los botones no funcionan.
Por favor, dime cómo deshacerme del flagelo.
Comentario más útil
El registro de la consola debería funcionar, pero por si acaso. Recuerde que Angular necesita llamar a $ scope. $ Digest (); si está utilizando otras bibliotecas para actualizar vistas y ámbitos.
Entonces, si está usando una alerta dulce, asegúrese de que su devolución de llamada se vea así: