Chapter 2: Using service factories

HTML

<script src="https://code.angularjs.org/1.3.2/angular.min.js"></script>
<div ng-app="myApp">
    <div ng-controller="Ctrl">
        <button ng-click="update()">Update</button>
        {{ data.name }} #{{ data.number }}
    </div>
    <div ng-controller="Ctrl2">
        <button ng-click="update()">Update</button>
        {{ data.name }} #{{ data.number }}
    </div>
</div>

JavaScript

angular.module('myApp', [])
.controller('Ctrl', function($scope, MyFactory) {
    $scope.data = MyFactory.getPlayer();
    $scope.update = MyFactory.swapPlayer;
})
.controller('Ctrl2', function($scope, MyFactory) {
    $scope.data = MyFactory.getPlayer();
    $scope.update = MyFactory.swapPlayer;
})
.factory('MyFactory', function() {
		var a = 1;
    var player = {
        name: 'Peyton Manning',
        number: 18
    },  swap = function() {
        player.name = 'A.J. Green';
    };
    return {
        getPlayer: function() {
            return player;  
        },
        swapPlayer: function() {
                		a++;
            console.log(a);
            swap();
        }
    };
});