Javascript 为什么父模板的ui视图中的指令在转到子状态时再次执行
无论何时调用子状态,都会再次加载父状态内的指令(第二次)。在调用子状态时是否可以防止加载指令 用例:Javascript 为什么父模板的ui视图中的指令在转到子状态时再次执行,javascript,angularjs,angular-ui-router,angular-directive,Javascript,Angularjs,Angular Ui Router,Angular Directive,无论何时调用子状态,都会再次加载父状态内的指令(第二次)。在调用子状态时是否可以防止加载指令 用例: module.config(function($stateProvider) { $stateProvider .state('parent', { url: 'parent', templateUrl: 'parent.html', controller: "ParentController"
module.config(function($stateProvider) {
$stateProvider
.state('parent', {
url: 'parent',
templateUrl: 'parent.html',
controller: "ParentController"
})
.state('parent.child',{
url:'/child',
templateUrl: 'child.html',
controller: "ChildController"
})
});
module.directive('myDirective', function() {
return {
link: function() {
console.log('directive is called');
}
}
})
//parent.html
<div ui-view>
<my-directive></my-directive>
</div>
<button type="button" ui-sref="parent.child">Switch</button>
module.config(函数($stateProvider){
$stateProvider
.州('父'{
url:'父',
templateUrl:'parent.html',
控制器:“父控制器”
})
.state('parent.child'{
url:“/child”,
templateUrl:'child.html',
控制器:“儿童控制器”
})
});
module.directive('myDirective',function(){
返回{
链接:函数(){
log('调用指令');
}
}
})
//parent.html
转换
当您单击按钮时,myDirective再次执行,ui-viewdiv被替换为child.html尝试以下操作:-//parent.html您无法阻止再次加载指令,原因很简单。您正在使用此内部ui视图。当您的子页面即将加载时,您的ui视图将被刷新,因此它将再次调用您的指令。请尝试以下操作:-//parent.html您无法阻止再次加载指令,原因很简单。您正在使用此内部ui视图。当您的子页面将要加载时,您的ui视图将被刷新,因此再次调用您的指令。