有没有办法检查指令是否包含另一个指令?据我所知,在AngularJS中没有什么可以做的,你不能在父母中要求子指令。
我有两个指令,一个叫page-wrapper
,另一个是content-wrapper
,如下所示:
<md-content page-wrapper>
<profiles $router="::$$router" class="ng-scope ng-isolate-scope">
<page-content>
</page-content>
</profil-liste>
</md-content>
我要做的是检查page-wrapper
指令是否在其子节点中包含page-content
指令,如果没有,那么我应该引发一些异常。
我不想检查page-content
是否在其父母的内部,我已经知道如何不符合我的要求。
请注意我正在使用angular_1_router
,因此page-content
未在编译page-wrapper
的阶段呈现,这就是page-wrapper
所看到的情况链接功能:
innerHTML:"<profiles $router="::$$router" class="ng-scope"></profiles>"
因此,在DOM中搜索page-content
对任何事情都无济于事。
我还尝试使用$timeout
服务延迟它:
function PageWrapperPostLink(scope, element, attrs, controller) {
$timeout(function(){
console.log(element);
});
}
哪个没用,包含page-content
的页面还没有注入路由器。
答案 0 :(得分:0)
如果您没有找到page-content
指令,我不确定您想要发生什么,但这里有一些示例代码,说明如何从page-wrapper
指令进行搜索以确定该情况
angular.module('app', [])
.directive('pageWrapper', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var pageContent = element[0].querySelector('page-content');
if (pageContent) {
console.log('found');
} else {
console.log('not found');
}
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
<div ng-app="app">
<div>
<md-content page-wrapper>
<profiles $router="::$$router" class="ng-scope ng-isolate-scope">
<page-content>
</page-content>
</profiles>
</md-content>
</div>
</div>