模块之间的AngularJS通信

时间:2016-05-14 11:17:37

标签: angularjs

假设我有两个AngularJS模块,即M1和M2,我想实现这样的功能:当M1中的变量改变时,可以调用M2中的函数。我的代码如下,但它无法正常工作。任何人都可以帮忙看看有什么问题吗?谢谢。

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

2 个答案:

答案 0 :(得分:0)

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

'use strict';

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

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

答案 1 :(得分:0)

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

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