我有一个使用两个控制器的页面。一个与标题相关联(在许多不同的页面上重复使用),另一个与页面主体相关联。加价看起来像:
<div id = 'header' ng-controller = 'headerController' >
<div id = 'login-button' ng-click = 'login()'>
Login
</div>
</div>
<div id = 'body' ng-controller = 'myPageController'>
....
</div>
控制器分别在两个单独的JS文件中定义:
headerController.js
myPageController.js
我想将一个监听器绑定到login()
函数,这样只要单击与其关联的按钮,就会在myPageController.js
文件中调用另一个函数。
我将如何在Angular中执行此操作?
答案 0 :(得分:5)
最好的方法是$broadcast()
$rootScope
来自您的页面控制器使用$scope.$on()
处理的function headerController($scope, $rootScope) {
$scope.login = function () {
$rootScope.$broadcast('login');
};
}
事件。
示例:
headerController.js:
function myPageController($scope) {
$scope.$on('login', function () {
// handle login event here
});
}
myPageController.js
{{1}}
答案 1 :(得分:0)
$ rootScope。$ broadcast()相当慢。如果您只想要两个不相关的控制器进行通信,最好通过服务完成。例如,请参阅我的回答:
Communicating between a Multiple Controllers and a directive
希望有所帮助!