title: What's the correct way to communicate between controllers in AngularJS?
body: <p>What's the correct way to communicate between controllers?</p>
  
  <p>I'm currently using a horrible fudge involving <code>window</code>:</p>
  
  <pre><code>function StockSubgroupCtrl($scope, $http) {
      $scope.subgroups = [];
      $scope.handleSubgroupsLoaded = function(data, status) {
          $scope.subgroups = data;
      }
      $scope.fetch = function(prod_grp) {
          $http.get('/api/stock/groups/' + prod_grp + '/subgroups/').success($scope.handleSubgroupsLoaded);
      }
      window.fetchStockSubgroups = $scope.fetch;
  }
  
  function StockGroupCtrl($scope, $http) {
      ...
      $scope.select = function(prod_grp) {
          $scope.selectedGroup = prod_grp;
          window.fetchStockSubgroups(prod_grp);
      }
  }
  </code></pre>