2016-04-14 18 views
7

Sto usando SweetAlert2 e sto ottenendo il seguente erroreTypeError Uncaught: Impossibile leggere la proprietà 'poi' undefined usando dolce Alert

Uncaught TypeError: Cannot read property 'then' of undefined

Quando uso lo stesso codice esattamente come suggerito nella pagina SweetAlert.

swal({ 
title: 'Are you sure?', 
    text: "You won't be able to revert this!", 
    type: 'warning', 
    showCancelButton: true, 
    confirmButtonColor: '#3085d6', 
    cancelButtonColor: '#d33', 
    confirmButtonText: 'Yes, delete it!', 
    cancelButtonText: 'No, cancel!', 
    confirmButtonClass: 'btn btn-success', 
    cancelButtonClass: 'btn btn-danger', 
    buttonsStyling: false, 
    closeOnConfirm: false, 
    closeOnCancel: false 
}).then(function(isConfirm) { 
    if (isConfirm === true) { 
    swal(
     'Deleted!', 
     'Your file has been deleted.', 
     'success' 
    ); 
    } else if (isConfirm === false) { 
    swal(
     'Cancelled', 
     'Your imaginary file is safe :)', 
     'error' 
    ); 
    } else { 
    // Esc, close button or outside click 
    // isConfirm is undefined 
    } 
}) 

Ho il codice alla fine della pagina. Lo sto utilizzando in un'app Ruby on Rails. Ho provato a restituire un valore come suggerito in altri post, ma non risolve il problema

+0

Hai aggiunto un riferimento al relativo file js? –

+0

Perché significa che non c'è swal nel contesto. Quindi significa che il file javascript non è referenziato nel file o che swal non è stato creato correttamente. –

+0

@HiradNikoo Ho segnalato swal. In realtà si apre la vista modale. Ma dopo la conferma/annullamento non passa. – marimaf

risposta

6

sembra che l'implementazione di sweetalert2 utilizzi l'API promessa nativa e che non sia incluso il polyfill. Il significato potrebbe non funzionare in alcuni browser. Anche la pagina github mostra lo stesso errore. Funziona bene quando lo provo in chrome, ma non funziona in IE11. Vorrei considerare l'inclusione di un polyfill API, a seconda del browser/s che si sta tentando di supportare. Questo non ha nulla a che fare con le rotaie.

Polyfill è here o google ES6 promettono polyfill. Includilo prima del file js sweetalert2 e dovresti stare bene.

Se non capisco di cosa sto parlando con la promessa API, buon articolo here su di esso, o promessa di Google JS.

Ora, se tutto questo è troppo difficile e/o confuso, perché non utilizzare semplicemente l'originale sweetalert (link here) poiché non utilizza l'API promessa. Non sono proprio sicuro del motivo per cui hanno biforcuto, visto che non riesco a vedere alcuna funzionalità drasticamente nuova, a parte l'uso delle promesse, e un paio di nuove icone modali (informazioni e domande)

+0

Sì, penso che tu abbia ragione. Ho visto il codice. Si utilizza Promessa nativa alla riga 321. –

+0

Sto provando il mio codice in chrome – marimaf

+1

L'utilizzo del codice sweetalert originale ha risolto il problema. Grazie – marimaf

Problemi correlati