调用不带元素的angular指令

时间:2014-11-25 05:59:12

标签: javascript angularjs angularjs-directive

我正在尝试以角度构建通知服务,而无需在代码中添加随机元素。大多数通知repo都需要在代码中添加一个元素来调用指令:

HTML
<div notifications></div>

DIRECTIVE
myApp.directive('notifications', function() {});

这个代码存在的唯一原因似乎是因为需要调用指令。所有&#39;设置&#39;可以在调用通知时在提供程序中处理:

$notify(settings)

此外,如果可以在没有元素的情况下调用该指令,该指令如何创建一个&#39;通知&#39;身体底部的元素,并将其自身绑定到它?

所以我问,是否可以在没有这个任意代码的情况下调用指令?或者有更简单的方法吗?或者这是一个愚蠢的问题?

提前感谢:)

1 个答案:

答案 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 );
});