我对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.