Вы можете использовать декораторы AngularJS, которые позволяют вам изменять директивы (также сервисы и почти что угодно) во время их создания.
Это версия AngularJS для исправления обезьян. В будущем, если вы захотите изменить другие директивы, используйте следующий шаблон при использовании метода .decorator
.
[nameOfDirective]Directive
e.g: typeaheadPopupDirective
var app = angular.module("monkey", ["ui.bootstrap"]);
app.config(function ($provide) {
$provide.decorator("typeaheadPopupDirective", function ($delegate) {
$delegate[0].templateUrl = "template/typeahead/typeahead-popup-ALTERNATIVE.html";
return $delegate;
});
});
Вот демонстрация этой работы с оригинальной директивой ui-bootstrap. Вы должны получить ошибку 404, пока директива пытается получить новый URL-адрес шаблона.
http://plnkr.co/edit/0mPADZ7D7Eszp07R2g60?p=preview
официальная документация по декораторам.
Декоратор службы перехватывает создание службы, позволяя переопределить или изменить поведение службы. Объект, возвращаемый декоратором, может быть исходной службой или новым объектом службы, который заменяет исходную службу, обертывает и делегирует ее.
Обновить
Начиная с angular bootstrap 0.14.x, эта функция теперь поддерживается изначально. в директиве typeahead
вы можете указать шаблон, который будет использоваться для всплывающего окна, используя атрибут typeahead-popup-template-url
.
<input type="text" ng-model="selected"
typeahead="state for state in states | filter:$viewValue
typeahead-append-to-body="true"
typeahead-popup-template-url="customPopUp.html"
class="form-control">
person
Ricardo Velhote
schedule
18.07.2015