का उपयोग करते हुए $provide.decorator
$provideनिर्देश को सजाने के लिए उपयोग करने के साथ सीधे गड़बड़ करने की आवश्यकता से बचा जाता है $templateCache।
इसके बजाय, अपना बाहरी टेम्प्लेट html बनाएं जैसा कि आप सामान्य रूप से कर सकते हैं, जो भी नाम आप चाहें, और फिर उस templateUrlपर इंगित करने के लिए निर्देश को ओवरराइड करें ।
angular.module('plunker', ['ui.bootstrap'])
.config(['$provide', Decorate]);
function Decorate($provide) {
$provide.decorator('alertDirective', function($delegate) {
var directive = $delegate[0];
directive.templateUrl = "alertOverride.tpl.html";
return $delegate;
});
}
Pkozlowski.opensource का प्लंक का कांटा : http://plnkr.co/edit/RE9AvUwEmKmAzem9mfpI?p=preview
(ध्यान दें कि आपको निर्देशन नाम के लिए 'निर्देश' प्रत्यय को जोड़ना होगा जिसे आप सजाने के लिए चाहते हैं। ऊपर, हम यूआई बूटस्ट्रैप के alertनिर्देश को सजा रहे हैं , इसलिए हम नाम का उपयोग करते हैं alertDirective।)
जैसा कि आप अक्सर केवल ओवरराइड से अधिक करना चाहते हैं templateUrl, यह एक अच्छा प्रारंभिक बिंदु प्रदान करता है जिसमें से निर्देश को आगे बढ़ाने के लिए, उदाहरण के लिए लिंक या संकलन फ़ंक्शन को ओवरराइड / रैप करके या उदाहरण के लिए ।
$modalसेवा को सजाने के लिए पाया है (बिना उम्मीद के) अधिक विन्यास प्राप्त करने के लिए एक रखरखाव सिरदर्द का बहुत अधिक निर्माण करना।$provide.decorator('$modal'... मेरे मामले में मैंmodalWindowतत्व को प्रस्तुत नहीं करना चाहता था । कभी। मैं अभी इसका उपयोग नहीं कर रहा था, और यह सबसे अच्छा था जिसके साथ मैं आ सकता था। अगर किसी के पास है तो बेहतर तरीके से सुनना पसंद करूंगा।