لدى بضعة من تطبيقات هذا جعل $http.get() المكالمات، وتريد أن تكون قادرة على إظهار رسالة خطأ تنسيق جيد مع تفاصيل الخطأ القبيح المخفية, ولكن يمكن الوصول إليها. أساسا, وهذا:
ومن ثم إذا كان المستخدم بالنقر فوق الخطأ, أنها رؤية مزيد من المعلومات:
الأشياء البسيطة. حيث يمكن أن تظهر الضبط نفس الخطأ المحتملة في الشاشة الإدارية فضلا عن شاشة المستخدم النهائي, ودعا وضوح توجيه زاوي مخصصة. أنا وجدت هذا سلسلة المعلقة من المقالات (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) قبل الكبير دان فلين. اتباع نصيحته, أنا خلقت بسرعة كبيرة <مرحبا--العالم> التوجيه وتم نقله إلى بلدي ممسحة عرض خطأ أكثر تعقيداً. أنا واجهت قليلاً من المتاعب مع هذا التوجيه أكثر تعقيداً. لحسن الحظ, نوع من طريق الصدفة, وقد قلت ويبستورم (محرر استخدام في هذه الأيام) أن كان الملف شبيبة ملف زاوي وأنها ساعدت لي معرفة المسألة. هذا هو الرمز للتوجيه نفسها:
angular.module("كدلاب").التوجيه("جينيرالكدليرورهاندلير", الدالة() {
عودة {
تقييد: "هاء",
استبدال: صحيح,
نطاق: {
ريتريفيلاستكونفيجوراتيونيرور: "&"
},
قالب:
'<div class = "تنبيه تنبيه خطر" دور = "تنبيه" الحرس الوطني-init = "دوشوويكسبانديديرورديتايلس = true" الحرس الوطني-عرض = "ريتريفيلاستكونفيجوراتيونيرور()">' +
' وكان هناك خطأ في الإدخال/إخراج أو غيرها خطأ. يحدث هذا عادة لأنه لا يمكن أن يكون ملف بيانات التكوين ' +
' العثور على أو ملف التكوين يحتوي على معلومات غير صحيحة (مثل الرجوع إلى مكتبة مستندات ' +
' غير موجود).' +
' <br/>' +
' <div نغ-إظهار = "دوشوويكسبانديديرورديتايلس">' +
' <href = "#" الحرس الوطني-انقر فوق = "دوشوويكسبانديديرورديتايلس = ! دوشوويكسبانديديرورديتايلس ">' +
'انقر هنا لإخفاء التفاصيل'. +
' </أ>: ' +
' <br/>' +
' <ما قبل>{{ريتريفيلاستكونفيجوراتيونيرور() | json}}</ما قبل>' +
' <br/>' +
' </div>' +
' <div نغ-إظهار = "!دوشوويكسبانديديرورديتايلس ">' +
' <href = "#" الحرس الوطني-انقر فوق = "دوشوويكسبانديديرورديتايلس = ! دوشوويكسبانديديرورديتايلس ">' +
'انقر هنا لتوسيع تفاصيل الخطأ'. +
' </أ>' +
' </div>' +
'</div>'
};
});
أساسا, أنا إنشاء عنصر جديد يسمى "جينيرالكدليرورهاندلير". أنه يحتاج إلى الوصول إلى دالة تسمى ريتريفيلاستكونفيجوراتيونيرور والتي يتم التعامل معها في كائن نطاق. ربما يمكن فقط استخدمت نطاق الأصل, ولكن أن يشعر كسول. إذا كان أي شخص يعتقد أن قد فعلت ذلك, أنا أحب أن أسمع عنه في التعليقات.
وهذا كان كل شيء على ما يرام, ولكن لم يكن في الحصول على أي شيء. لا الأخطاء التي برزت في وحدة التحكم (أنا ثابت على الأقل مرة واحدة كل أخطاء sx أنشئت على طول الطريق). أنا ببساطة لم يحصل أي إخراج من التوجيه. ذهب، وإضافة بعض النص الثابت قبل التوجيه إظهار نغ، و * هل * الحصول على أن. هذا جعلني أعتقد أنه ربما لم يكن يسمح التوجيه ضمنياً إنشاء فأر جديدة مثل "دوشوويكسبانديديرورديتايلس" أو يكون "نغ init" هناك.
عدت إلى HTML لمعرفة إذا كان نوع وهذا الوقت ويبستورم ساعدني خارجاً. وقد تم تمرير أنا في الدالة ريتريفيلاستكونفيجوراتيونيرور مثل هذا:
<retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError cdl العامة-معالج خطأ()">
</العامة cdl معالج خطأ>
ولكن كان هناك حاجة فعلا أن يكون هذا:
<العامة-cdl-خطأ-معالج استرداد-الأخيرة-التكوين-خطأ = "CDLController.retrieveLastConfigurationError()">
</العامة cdl معالج خطأ>
ويبستورم كان ذكيا بما يكفي أن نعرف أنه كان عليها أن يكون تطبيق الواصلة. إذا لم أكن قد قدمت هذا التلميح, أنا سوف ربما يكون لا يزال استكشاف الأخطاء وإصلاحها وهذا . أوقات المرح!
هذا خدعة: ليس فقط هو اسم عنصر التوجيه بالواصلة, هكذا هي سمات أي يمكنك إضافة إلى ذلك. بمجرد أضفت الواصلات, كل شيء عملت كبيرة. حدث تعليمي دان استخدام أسماء قصيرة واحدة, لذا لم أكن جعل الاتصال.
أمل أن يساعد هذا شخص.
</نهاية>
اتبعني على التغريد في http://www.twitter.com/pagalvin