Saya memiliki aplikasi AngularJS menggunakan kerangka Angular Material UI.
Aplikasi ini memiliki mekanisme berbeda yang menampilkan dialog (misalnya kesalahan dan memuat spinner) dan akan lebih baik jika hanya menutup dialog yang dipilih secara khusus dalam skenario tertentu, misalnya. ketika permintaan AJAX selesai mengambil data, saya ingin pemintal pemuatan saya ditutup, tetapi tidak ada dialog kesalahan apa pun yang mungkin disebabkan oleh pengambilan tersebut.
Apa yang saya temukan dalam dokumentasi dan kode tidak sesuai (walaupun kode harus memenangkan argumen):
- Dokumentasi menyatakan hanya yang terbaru yang dapat ditutup, dengan respons opsional
- Kode mengatakan yang terbaru, sejumlah yang terbaru atau semua yang terbuka dapat ditutup, dengan alasan opsional
- Contoh di dokumentasi mengatakan dialog tertentu dapat ditutup, dengan tanda yang menunjukkan bagaimana atau mengapa
Saya telah membuat demo niat saya, sebagai MCV sebanyak mungkin – berikut adalah hal-hal penting:
var dialog = {},
promise = {};
function showDialogs(sourceEvent) {
showDialog(sourceEvent, "one");
showDialog(sourceEvent, "two");
}
function showDialog(sourceEvent, id) {
dialog[id] = $mdDialog.alert({...});
promise[id] = $mdDialog.show(dialog[id]);
promise[id].finally(function() {
dialog[id] = undefined;
});
}
function closeDialogs() {
$mdDialog.hide("Closed all for a reason", {closeAll: true});
}
function closeDialogLatest() {
$mdDialog.hide("Closed from the outside");
}
function closeDialogReason() {
$mdDialog.hide("Closed with a reason");
}
function closeDialogSpecific(id) {
$mdDialog.hide(dialog[id], "finished");
}
EDIT:
Saya tahu kode tersebut selalu memenangkan argumen tentang apa yang terjadi, namun saya tidak sepenuhnya yakin itu adalah kode yang tepat yang saya lihat.
Saya telah memperbarui contohnya menjadi tes yang lebih baik dan ilustrasikan poin dan masalah saya. Ini menunjukkan segala sesuatunya berfungsi seperti yang dikatakan kode.
Yang sebenarnya saya cari adalah apakah masih mungkin mencapai tujuan saya dengan cara lain yang belum terpikirkan oleh saya.