В настоящее время я изучаю AngularJS, и я хочу создать модуль для уведомлений, но я не могу найти никаких учебных пособий.AngularJS создать элемент на заводе
Я хочу, чтобы все мои уведомления добавляли в div, который мне нужно создать вначале. Итак, вот мой первый вопрос. Где я должен добавить элемент в DOM, чтобы код по-прежнему был действительным угловым кодом.
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
...
<div class="notification-center"> //Element I need to create
... //Notifications come here
</div>
</body>
</html>
Я решил ее путем добавления DIV внутри функции module.run(), но почему-то я не думаю, что он должен быть там
var notification = angular.module('notification', []);
notification.run([function(){
var el = angular.element('#notificationcenter');
if(!angular.element(el).length){
el = angular.element('<div>').attr('id', 'notificationcenter').text('{{ text }}').appendTo(angular.element('body'));
}
}]);
Для создания уведомлений я написал где я добавляю другой div внутри #notificationcenter div.
notification.factory('notification', [function(){
var defaults = {
duration: 5000
};
return function(text, settings){
var element = angular.element('<div>').addClass('notification').text(text).appendTo(angular.element('#notificationcenter'));
};
}]);
В основном это работает как хорошо, но когда я хочу создать директиву для уведомления, оно не будет применять. Я видел примеры, где это делается с помощью метода компиляции $, но это всегда происходило внутри другой директивы или контроллера, поскольку требуется область, которой у меня нет на фабрике.
Что я делаю неправильно?
https://docs.angularjs.org/guide/директива – Phil
с использованием 'angleular.element' ничем не отличается от использования JQuery. если вы планируете создать директиву, которая управляет DOM, она должна использовать шаблон, а не 'angular.element'. и фабрики должны ** никогда не быть ответственными за код DOM. – Claies