我在同一层次结构中有两个指令:directive1和directive2 我希望directive2在directive1之前执行他的控制器而不改变html指令层次结构
app.directive('directive1', [function() {
return {
restrict: 'E',
scope: {
},
templateUrl: 'My/views/directive1.html',
controller: ['$scope', function ($scope) {
console.log("Controller of Directive 1");
}]
}
}]
)
app.directive('directive2', [function() {
return {
restrict: 'E',
templateUrl: 'My/views/directive2.html',
controller: ['$scope','$timeout', function ($scope,$timeout) {
console.log("Controler of Directive 2");
}]
}
}]
);

<div ng-controller="test" >
<directive1></directive1>
<directive2></directive2>
</div>
&#13;
答案 0 :(得分:0)
我的第一个问题是为什么??,但理论上你可以添加一个超时,它会将指令推送到堆栈的末尾。等待你正在寻找的指令中的广播事件...等等:
app.directive("firstDir", function(){
return {
restrict : 'E',
controller : function($scope){
this.data = 'init value';
this.set = function(value){
//EMIT THE EVENT WITH DATA
$scope.$emit('FIRST_DIR_UPDATED', value);
this.data = value;
// communication with second Directive ???
}
},
controllerAs : 'firstCtrl'
};
});
app.directive("secondDir", function(){
return {
restrict : 'E',
controller : function($scope){
var _that = this;
//LISTEN TO THE EVENT
$scope.$on('FIRST_DIR_UPDATED', function(e, data){
_that.data = data;
});
this.data = 'init value';
},
controllerAs : 'secondCtrl'
};
});
这是来自answer
的POC所以这个想法是一个指令发出或广播一个消息而另一个捕获是..你还可以添加一个标志,这样就会发生这种情况
这就是你要找的东西吗?