Javascript 无元素调用角度指令

Javascript 无元素调用角度指令,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试图在angular中构建通知服务,而不必在代码中添加随机元素。大多数回购通知要求在代码中添加元素以调用指令: HTML <div notifications></div> DIRECTIVE myApp.directive('notifications', function() {}); 另外,如果可以在没有元素的情况下调用指令,指令如何在主体底部创建“通知”元素,并将自身绑定到它? 所以我问,是否可以在没有这个任意代码的情况下调用指令?还是有更简单的方法?或者这

我试图在angular中构建通知服务,而不必在代码中添加随机元素。大多数回购通知要求在代码中添加元素以调用指令:

HTML
<div notifications></div>

DIRECTIVE
myApp.directive('notifications', function() {});
另外,如果可以在没有元素的情况下调用指令,指令如何在主体底部创建“通知”元素,并将自身绑定到它? 所以我问,是否可以在没有这个任意代码的情况下调用指令?还是有更简单的方法?或者这是一个愚蠢的问题

提前感谢:

我建议不要使用下面的代码,至少对于常规做法是这样。 此notifications指令是一种边缘情况,其中一个且只有一个指令会放在页面上,并且它可以位于根范围之外的一个隔离范围内,因为我希望它的数据顶部可以从服务填充

我只是想表明所要求的是可能的。 应该避免使用$compile,还有更好的方法,比如要求将元素添加到DOM中,这样就可以控制notifications指令绑定到的元素和范围

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

不是我糊涂了,就是你糊涂了。我以为指令是用angular.module.directive方法创建的。@akonsu-纠正了错误-我一定是糊涂的那个:好的。我还是不明白这个问题。。。指令如何创建元素并绑定到它?这意味着什么?对-这是我的问题:如何创建一个元素并用指令绑定到它?Angular非常棒,指令也非常棒——但在某些情况下,使用JS创建元素比在主体中添加单独的元素更有意义。这将在安装模块时增加不必要的额外步骤,而JS完全能够自动添加模块。考虑到这一点,我完全明白这个问题可能看起来有多么愚蠢——这就是为什么我愿意回答,除非这是不可能的。不妨问问看,对吧?当使用angular时,通常您根本不在javascript中创建元素。我就是这么做的。我不确定这是否有用…你为什么反对它?代码为您添加了元素,因此您不必担心它。这与最佳实践背道而驰,但我很难相信最佳实践在任何情况下都是可行的。如果元素只是用来调用指令并包含通知,我看不出这是一个坏主意的原因:要求在DOM中打开指令会给最终用户带来控制权。在这种情况下,这并不是世界末日,它确实打破了最佳做法,但对于全局应用程序通知,这可能是可以的。是的,如果用户希望将元素放在正文中的其他位置,从而破坏“全局”通知点,则应手动插入元素。然而,正如您所说,最佳实践不应该在所有情况下都获胜——对于安装它的用户来说,这是一场简单的简单战争,或者是代码本身的简单战争。
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 );
});