ฉันรู้ว่าอาจเป็นคำถามง่ายๆ แต่ฉันหงุดหงิดและทำไม่ได้ ฉันยังใหม่กับ AngularJS และฉันกำลังพยายามใช้กล่องโต้ตอบโมดอล (หรือค้นหา) ด้วยเงื่อนไขเหล่านี้:
- เนื้อหากล่องโต้ตอบอาจมาจากทุกที่ เช่น เทมเพลตสตริง เทมเพลตสคริปต์ หรือเทมเพลตจาก URL
- ชื่อกล่องโต้ตอบและการดำเนินการจะมาจากผู้โทร ไม่ใช่ผู้โทร กล่าวอีกนัยหนึ่ง ขอบเขตหลักจะตัดสินชื่อเรื่องและปุ่มการดำเนินการใดที่ควรมีอยู่ในกล่องโต้ตอบโมดอล (กล่องโต้ตอบหลายรายการที่ฉันพบจะสรุปปุ่มชื่อเรื่องและการดำเนินการในเทมเพลตเอง เช่น อันนี้)
- เนื้อหาของเทมเพลตควรเป็นอิสระโดยสิ้นเชิงจากขอบเขตหลัก (ผู้โทร) อันที่จริงมันอาจจะไม่ได้เขียนใน AngularJS ด้วยซ้ำ มันอาจใช้ jQuery
ในกรณีที่เทมเพลตที่โหลดอยู่ใน AngularJS ควรห่อหุ้มคอนโทรลเลอร์ไว้ ตัวอย่างเช่น
ng-include
ไม่ชอบแท็ก<script>
มีวิธีแก้ปัญหา (ที่นี่, ที่นี่ และ ที่นี่) แต่แนวคิดในการตกแต่งแท็กสคริปต์ด้วย
text/javascript-lazy
นั้นมีกลิ่นเหม็นและสกปรกมาก ให้ เพียงอย่างเดียวที่ฉันต้องการให้เนื้อหา HTML นั้นมีอยู่ในตัวเองและสามารถเรียกใช้งานได้ในกรณีที่ไม่ได้โหลดเป็นเนื้อหาของกล่องโต้ตอบโมดอล AngularJSการสื่อสารระหว่างขอบเขตหลักและเนื้อหาควรทำผ่านสัญญาทั่วไป (เหตุการณ์ JavaScript อยู่ในใจของฉัน)
ฉันได้ลอง ngDialog
แล้ว แต่ปัญหาคือคอนเทนเนอร์ควรส่ง controller
ไปยังเทมเพลตที่โหลด นั่นไม่ใช่สิ่งที่ฉันต้องการ ในกล่องโต้ตอบ Bootstrap ดูเหมือนว่าคุณจะต้องส่ง controller
จากขอบเขตหลักไปยัง เนื้อหาโต้ตอบ สิ่งนี้ทำลายแนวคิดเรื่องการห่อหุ้ม มันไม่พึงปรารถนา นอกจากนี้ยังขึ้นอยู่กับ ผลลัพธ์การโต้ตอบ ซึ่งไม่เป็นที่ต้องการเช่นกัน