2014-08-28 113 views
0

試圖瞭解它可以在不同模塊下的控制器之間進行通信。這甚至有可能嗎?從不同模塊和控制器獲取角度變量

這裏是我的測試,我想學習從:

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

http://jsfiddle.net/6kqszmuz/

回答

1

是的,使用廣播或發送。所有控制器都可以訪問$ rootScope。你可以做的是向rootcope廣播一條消息,然後在其他控制器上定義$方法。這些反過來又會聽取在根管鏡中發射的事件。 看看$廣播https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope和$上。

我認爲你正試圖重新使用viewmodels,這是我不會做的事情。

+0

謝謝,這正是我需要學習的東西 – abritez 2014-08-28 17:00:30