Menggunakan $provide.decorator
Menggunakan $provide
untuk menghias arahan menghindari kebutuhan untuk langsung dipusingkan $templateCache
.
Alih-alih, buat html template eksternal Anda seperti biasa, dengan nama apa pun yang Anda suka, lalu timpa petunjuk templateUrl
untuk menunjuknya.
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;
});
}
Garpu dari plunkr pkozlowski.opensource: http://plnkr.co/edit/RE9AvUwEmKmAzem9mfpI?p=preview
(Perhatikan bahwa Anda harus menambahkan akhiran 'Directive' ke nama direktif yang ingin Anda hiasi. Di atas, kami mendekorasi alert
direktif UI Bootstrap , jadi kami menggunakan namanya alertDirective
.)
Karena Anda mungkin sering ingin melakukan lebih dari sekadar menimpa templateUrl
, ini memberikan titik awal yang baik untuk memperluas direktif lebih lanjut, misalnya dengan menimpa / membungkus tautan atau fungsi kompilasi ( misalnya ).
$modal
layanan untuk mendapatkan lebih banyak konfigurasi tanpa (semoga) membuat terlalu banyak sakit kepala pemeliharaan.$provide.decorator('$modal'
... Dalam kasus saya, saya tidak ingin membuatmodalWindow
elemen. Pernah. Saya hanya tidak menggunakannya, dan ini adalah yang terbaik yang bisa saya dapatkan. Saya ingin mendengar cara yang lebih baik jika ada yang memilikinya.