我正在尝试以角度构建通知服务,而无需在代码中添加随机元素。大多数通知repo都需要在代码中添加一个元素来调用指令:
HTML
<div notifications></div>
DIRECTIVE
myApp.directive('notifications', function() {});
这个代码存在的唯一原因似乎是因为需要调用指令。所有&#39;设置&#39;可以在调用通知时在提供程序中处理:
$notify(settings)
所以我问,是否可以在没有这个任意代码的情况下调用指令?或者有更简单的方法吗?或者这是一个愚蠢的问题?
提前感谢:)
答案 0 :(得分:0)
我建议使用下面的代码反对,至少在常规做法中如此。 这个通知指令是一个边缘情况,其中一个且只有一个指令可以放在页面上,并且它可以存在于根作用域之外的隔离范围内,因为我希望它的数据最多可以从服务中填充。
我只是简单地表明要求 的可能性。 应避免使用$ compile,并且有更好的方法,例如要求将一个元素添加到DOM中,以便可以控制notification指令所绑定的元素和范围。
module.directive('notification', 'blahBlahBlah');
module.run(function($document, $compile, $rootScope) {
// create an isolated scope so that the notification directive does not have an option to pollute the root scope.
var isolatedScope = $rootScope.$new(true);
var notificationDir = '<div notification></div>';
var bodyElem = angular.element($document[0].body);
bodyElem.append(notificationDir)
$compile(notificationDir )(isolatedScope );
});