尝试理解可以在不同模块下的控制器之间进行通信。这甚至可能吗?
以下是我尝试学习的测试:
HTML
<div ng-app="app">
<div ng-controller="AppCtrl">
<p data-ng-bind="group.name"></p>
<p data-ng-bind="project.name"></p>
</div>
<div ng-controller="ProjectCtrl">
<p data-ng-bind="group.name"></p>
<p data-ng-bind="project.name"></p>
</div>
<div ng-controller="GroupCtrl">
<p data-ng-bind="group.name"></p>
<p data-ng-bind="project.name"></p>
</div>
</div>
的javascript
var app = angular.module('app', ['project', 'group']);
var group = angular.module('group', ['project']);
var project = angular.module('project', ['group']);
app.controller('AppCtrl', ['$scope', 'Project', 'Group', function($scope, $project, $group) {
$scope.project = Project;
$scope.group = Group;
$scope.name = 'My App';
}]);
project.controller('ProjectCtrl', ['$scope', 'Project', 'Group', function($scope, $project, $group) {
$scope.project = Project;
$scope.group = Group;
$scope.name = 'My Project';
}]);
group.controller('GroupCtrl', ['$scope', 'Project', 'Group', function($scope, $project, $group) {
$scope.project = Project;
$scope.group = Group;
$scope.name = 'My Group';
}]);
答案 0 :(得分:1)
是的,使用广播或发射。所有控制器都可以访问$ rootScope。您可以做的是向rootscope广播消息,然后在其他控制器上定义$ on方法。这些反过来听取在根镜中发射的事件。 看看https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope和$ on。
中的$ broadcast我认为你正在尝试重新使用viewmodels,这是我不会做的事情。