web-dev-qa-db-ja.com

Uncaught TypeError:SweetAlertを使用して未定義のプロパティ 'then'を読み取ることができません

SweetAlert2 を使用していますが、次のエラーが発生します

Uncaught TypeError:undefinedのプロパティ 'then'を読み取ることができません

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
  }
})

ページの最後にコードがあります。 Ruby on Rails app。他の投稿で提案されているように値を返そうとしましたが、問題は解決しません。

8
marimaf

sweetalert2の実装はネイティブのpromiseAPIを使用しているように見え、ポリフィルは含まれていません。一部のブラウザでは意味が機能しない場合があります。 githubページでも同じエラーが表示されます。 Chromeで試してみると正常に動作しますが、IE11では動作しません。サポートしようとしているブラウザに応じて、promiseAPIポリフィルを含めることを検討します。これはRailsとは何の関係もありません。

ポリフィルは ここ またはグーグルES6プロミスポリフィルです。 sweetalert2 jsファイルの前にそれを含めれば、問題ないはずです。

私がpromiseAPIで何について話しているのかわからない場合は、良い記事 ここ 、またはgoogle JSpromiseです。

これらすべてが難しすぎたり、混乱したりする場合は、promise apiを使用しないため、元のスイートアラート( ここにリンク )を使用しないでください。もちろんpromiseといくつかの新しいモーダルアイコン(情報と質問)を使用することを除いて、劇的に新しい機能を見ることができないので、なぜ彼らがフォークしたのか正確にはわかりません

9
OJay