I know this question has been asked 100s of times but i have yet to succeed in implementing this after reading countless of threads... shame on me.
I know this is a lot of code (sorry). But I just can't find what I'm doing wrong, So to the problem I want to add something to the list in pat1 then click over to pat2 and see the same list.
Routing;
var routeApp = angular.module('routeApp', ['ngRoute', 'rootMod']);
routeApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
    when('/pat1', {
        templateUrl: 'partials/pat1.html',
        controller: 'pageOneCont'
    }).
    when('/pat2', {
        templateUrl: 'partials/pat2.html',
        controller: 'pageTwoCont'
    }).
    otherwise({
        redirectTo: '/pat1'
    });
}]);
Controllers & Service:
    var rootMod = angular.module('rootMod', []);
rootMod.controller('pageOneCont', [ 'serv', '$scope', function (serv, $scope) {
    'use strict';
    // Your controller implementation goes here ...
    $scope.handleClick = function ($scope, serv){
        var updateFoo = function(){
            $scope.foo = serv.foo;
        };
        aService.registerObserverCallback(updateFoo);
        //service now in control of updating foo
    };
}]);
rootMod.controller('pageTwoCont', [ 'serv', '$scope', function (serv, $scope) {
    'use strict';
    // Your controller implementation goes here ...
    $scope.handleClick = function ($scope, serv){
        var updateFoo = function(){
            $scope.foo = serv.foo;
        };
        aService.registerObserverCallback(updateFoo);
        //service now in control of updating foo
    };
}]);
/* Service */
rootMod.factory('serv', [ function () {
    var observerCallbacks = [];
    //register an observer
    this.registerObserverCallback = function(callback){
        observerCallbacks.push(callback);
    };
    //call this when you know 'foo' has been changed
    var notifyObservers = function(){
        angular.forEach(observerCallbacks, function(callback){
            callback();
        });
    };
}]);
INDEX.html
<!doctype html>
<html lang="en" ng-app="routeApp">
<head>
    <script src="lib/angular/angular.js"></script>
    <script src="lib/angular/angular-route.js"></script>
    <script src="js/app.js"></script>
    <script src="js/controllers.js"></script>
</head>
<body>
    <li><a href="#pat1"> ONE </a></li>
    <li><a href="#pat2"> TWO </a></li>
</body>
<!-- SinglePage -->
<div ng-view></div>
</html>
PAT1.html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Angular Test</title>
  <link rel="stylesheet" href="css/app.css">
  <link rel="stylesheet" href="css/bootstrap.css">
  <script src="lib/angular/angular.js"></script>
  <script src="js/controllers.js"></script>
</head>
<div ><!--ng-app="myModule" ng-controller="ContactController">-->
  <h1> ONE </h1>
  <button ng-click="handleClick"> BROADCAST </button>
  <div ng-repeat="item in foo">{{ item }}</div> 
</div>
</html>
PAT2.html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Angular Test</title>
  <link rel="stylesheet" href="css/app.css">
  <link rel="stylesheet" href="css/bootstrap.css">
  <script src="lib/angular/angular.js"></script>
  <script src="js/controllers.js"></script>
</head>
<div> <!--ng-app="myModule" ng-controller="ContactController">-->
  <h1> TWO </h1>
  <div ng-repeat="item in foo">{{ item }}</div>
</div>
</html>
 
     
    