Я пытаюсь скомпилировать дирекцию через угловое обслуживание, но, к сожалению, это не работает. Идея состоит в том, чтобы показывать ошибки во всплывающих окнах.Скомпилировать директивы через службу в angularjs
Я изменил $ ExceptionHandler услуги:
crm.factory('$exceptionHandler', function(popup) {
return function(exception) {
popup.open({message: exception});
}
});
всплывающую обслуживание выглядит следующим образом:
crm.factory('popup', function ($document) {
return {
open: function (data) {
var injector = angular.element(document).injector(),
$compile = injector.get('$compile'),
template = angular.element('<popup></popup>');
// var ctmp = $compile(template.contents());
$compile(template.contents());
$document.find('body').append(template);
}
};
});
И я не думаю, что это хорошая идея hard code $ compile сервис (но у меня нет идей, как реализовать это в угловом):
$compile = injector.get('$compile')
Popup директива:
crm.directive('popup', function() {
return {
restrict: 'E',
replace: true,
templateUrl: '/public/js/templates/common/popup.html',
link: function() {
console.log('link()');
},
controller: function() {
console.log('ctrl()');
}
};
});
Может быть, есть и другие способы сделать это? Спасибо.
Неа, я не могу использовать его непосредственно. Ошибка выглядит так: «Неиспользуемая ошибка: круговая зависимость: $ compile <- popup <- $ exceptionHandler <- $ rootScope" – user2573863
Не работает в Angular 1.2, он запрашивает область как параметр – perrohunter
, чтобы исправить это, '$ rootScope' и сделать' $ rootScope. $ new() ', чтобы создать новую область, обновить ответ. – Less