2016-05-14 88 views
1

假设我有两个AngularJS模块,即M1和M2,我想实现当M1中的变量发生变化时,可以调用M2中的函数。我的代码如下,但它不能正常工作。任何人都可以帮忙看看有什么不对吗?谢谢。模块之间的AngularJS通信

(function() { 
"use strict"; 
angular.module("M1", []); 
    })(); 

angular.module("M1") 
.controller("M1-controller", ['$rootScope', function ($rootScope) { 
      var vm = this; 

      vm.test = ""; 
      vm.clickFunction = function() { 
       vm.test = "abc"; 
       $rootScope.$broadcast('value-changed', vm.test); 
      }; 
}]) 


(function() { 
"use strict"; 
angular.module("M2", []); 
    })(); 

angular.module("M2") 
.controller("M2-controller", ['$rootScope', function ($rootScope) { 
      var vm = this; 

      $rootScope.$on('value-changed', function (event, args) { 
       alert(args); 
      }); 
}]) 

回答

0

首先,您必须为您的角度应用程序的所有模块添加依赖项。 假设你myApp.js文件包含以下代码并首先加载myApp.js文件。

'use strict'; 

angular.module('myApp', [ 
    'M1', 
    'M2' 
]); 

然后加载您的其他(M1和M2)模块,并尝试从不同模块进行广播和接收。如果无法正常工作,请创建并共享小提琴

0

您可以尝试添加M1模块作为M2模块中的依赖项。

angular.module("M2", ["M1"]);