Sử dụng $provide.decorator
Sử dụng $provide
để trang trí chỉ thị tránh sự cần thiết phải trực tiếp lộn xộn xung quanh $templateCache
.
Thay vào đó, hãy tạo html mẫu bên ngoài của bạn như bình thường, với bất kỳ tên nào bạn muốn và sau đó ghi đè chỉ thị templateUrl
để trỏ vào nó.
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;
});
}
Fork của pkozlowski.opensource 's plunkr: http://plnkr.co/edit/RE9AvUwEmKmAzem9mfpI?p=preview
(Lưu ý rằng bạn phải thêm hậu tố 'Chỉ thị' vào tên chỉ thị mà bạn định trang trí. Ở trên, chúng tôi đang trang trí alert
chỉ thị của UI Bootstrap , vì vậy chúng tôi sử dụng tên này alertDirective
.)
Vì bạn có thể thường muốn làm nhiều việc hơn là chỉ ghi đè templateUrl
, điều này cung cấp một điểm khởi đầu tốt để từ đó mở rộng thêm chỉ thị, ví dụ: bằng cách ghi đè / gói liên kết hoặc hàm biên dịch ( ví dụ ).
$modal
dịch vụ để có thêm khả năng cấu hình mà không (hy vọng) tạo ra quá nhiều đau đầu về bảo trì.$provide.decorator('$modal'
... Trong trường hợp của tôi, tôi không muốn hiển thịmodalWindow
phần tử. Không bao giờ. Tôi chỉ là không sử dụng nó, và đây là điều tốt nhất tôi có thể nghĩ ra. Tôi muốn nghe một cách tốt hơn nếu ai đó có nó.