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.
Referencia
Codigo completo