我有一个使用自定义模板的指令,我想将该指令中的数据传递给另一个指令,并寻找最佳方法。所以,我想当指令中的数据发生变化时,指令2会得到通知(观察者?),并对其采取行动。到目前为止,只有控制器内部的控制器方法和控制器方法(来自指令一)中的控制器内部的观察器才有意义。有更好的方法吗?
-------------- --------------
| directive 1 |---data-->| directive 2 |
| | | |
--------------- --------------
答案 0 :(得分:6)
您可以使用rootScope上的$broadcast:
在第一个指令上:
$rootScope.$broadcast("NEW_EVENT", data);
另一条指令:
scope.$on("NEW_EVENT", function(event, data){
//use the data
});
看看这个Understanding Angular’s $scope and $rootScope event system $emit, $broadcast and $on
答案 1 :(得分:1)
您可以使用$ broadcast或服务
$rootScope.$broadcast("anotherDirective");
如果要将一个指令的值用于另一个指令 然后
angular.module('app',[]).directive('directOne',function(serviceOne){
return {
restrict: 'A',
link: function (scope, el, attrs) {
serviceOne.variable1=anyValue;
}
}
});
第二指令
angular.module('app',[]).directive('directSec',function(serviceOne){
return {
restrict: 'A',
link: function (scope, el, attrs) {
console.log(serviceOne.variable1);
}
}
});