将数据从一个指令传递到另一个指令

时间:2015-05-26 07:52:14

标签: angularjs angularjs-directive

我有一个使用自定义模板的指令,我想将该指令中的数据传递给另一个指令,并寻找最佳方法。所以,我想当指令中的数据发生变化时,指令2会得到通知(观察者?),并对其采取行动。到目前为止,只有控制器内部的控制器方法和控制器方法(来自指令一)中的控制器内部的观察器才有意义。有更好的方法吗?

--------------           --------------
| directive 1 |---data-->| directive 2 |
|             |          |             |
---------------          --------------

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