Algo que sucede bastante mientras se esta usando AngularJS es querer que 2 controladores interactuen con la misma data, esto se puede hacer de varias maneras, o con un servicio o una factoría (La verdad es la misma forma de hacer digamos).
Ejemplo:
Digamos que tenemos un template con su app test con 2 controladores main y main2 y ambos estan pintando la variable service.message.
HTML
<div ng-app='test'> <div ng-controller='main'> {{ service.message }} </div> <div ng-controller='main2'> <p>{{ service.message }}</p> <input type="text" ng-model='service.message'/> </div> </div>
JavaScript
var app = angular.module('test',[]) app.controller('main',function($scope,ServiceTest,serviceFactory){ $scope.service = ServiceTest.data; }) app.controller('main2',function($scope,ServiceTest,serviceFactory,){ $scope.service = ServiceTest.data; }) app.service('ServiceTest',function(){ this.data = { message : "From service init" } }) app.factory('serviceFactory',function(){ return { message:"nice" } });
Para ambas formas funcionara de la misma manera, una vez inyectemos el service o la factoría tendremos la referencia de la misma variable y si cambiamos el valor de dicha variable sera reflejado en ambos lugares por que es la misma referencia.