ฉันมีแอป AngularJS โดยใช้เฟรมเวิร์ก Angular Material UI
แอปมีกลไกที่แตกต่างกันที่แสดงกล่องโต้ตอบ (เช่น ข้อผิดพลาดและตัวหมุนโหลด) และควรปิดเฉพาะกลไกที่เลือกไว้โดยเฉพาะในบางสถานการณ์ เช่น เมื่อคำขอ AJAX ดึงข้อมูลเสร็จแล้ว ฉันต้องการให้ตัวหมุนโหลดของฉันปิด แต่ไม่มีกล่องโต้ตอบข้อผิดพลาดใด ๆ ที่อาจเป็นผลมาจากการดึงข้อมูล
สิ่งที่ฉันพบในเอกสารและรหัสไม่สอดคล้องกัน (แม้ว่ารหัสควรจะชนะการโต้แย้ง):
- เอกสารประกอบบอกว่าปิดได้เฉพาะข้อมูลล่าสุดเท่านั้น โดยมี การตอบสนองที่เป็นทางเลือก
- รหัส บอกว่าล่าสุด จำนวนล่าสุดหรือเปิดทั้งหมดสามารถปิดได้ โดยมีเหตุผลเพิ่มเติม
- ตัวอย่างใน เอกสารประกอบระบุว่าสามารถปิดกล่องโต้ตอบเฉพาะได้ โดยมีธงที่ระบุว่าอย่างไรหรือเพราะเหตุใด
ฉันได้สร้างสาธิตความตั้งใจของฉัน เป็น MCV ที่สุดเท่าที่จะเป็นไปได้ สิ่งเหล่านี้คือจุดเด่น:
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");
}
แก้ไข:
ฉันรู้ว่าโค้ดมักจะชนะการโต้แย้งเกี่ยวกับสิ่งที่เกิดขึ้น แต่ฉันไม่แน่ใจทั้งหมดว่าเป็นโค้ดที่ถูกต้องที่ฉันกำลังดูอยู่
ฉันได้อัปเดตตัวอย่างเป็น ทดสอบและอธิบายประเด็นและปัญหาของฉันได้ดีขึ้น นี่แสดงสิ่งต่าง ๆ ที่ทำงานตามที่โค้ดกล่าว
สิ่งที่ฉันกำลังมองหาจริงๆ ก็คือ จะสามารถบรรลุเป้าหมายของฉันด้วยวิธีอื่นที่ฉันคิดไม่ถึงได้หรือไม่