angularjs – 两个指令(不是嵌套在HTML中)如何相互通信?

我对angularJS很新,我有一个问题(希望它不是那么愚蠢):

我有2个指令(不嵌套):

<div directive1></div>
<div directive2></div>

现在我希望指令与控制器相互通信(Ive在directive1中定义了’controller:’):

myApp
    .directive('directive2',function () {
        return {
            require: "^directive1",link: function (scope,element,attrs,directive1Ctrl) {
                directive1Ctrl.doSomething();
            }
        };
    });

但我总是得到’未找到控制器’例外..(我不确定^因为它只用于通过父母向上搜索).

如果它们没有嵌套,是否不能使用指令2中的directive1中定义的控制器?
我是否必须使用“单独”控制器,它们都需要相互协作?

解决方法

Do i have to use a ‘seperate’ Controller which both require to work with each other?

这很接近.在应用程序的不同部分(两个控制器,两个指令,一个指令和一个控制器等)之间共享数据和功能的标准方法是在服务中提供该数据或功能.然后可以将此服务注入任何需要它的应用程序组件.

在您的情况下,您可以创建一个提供doSomething函数的服务,并将其注入directive1和directive2.

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...