Servicio AngularJS pasando datos entre los controladores

Cuando utilizo un servicio AngularJS para intentar pasar datos entre dos controladores, mi segundo controlador siempre recibe un mensaje indefinido cuando intento acceder a los datos del servicio. Supongo que esto se debe a que el primer servicio hace $ window.location.href y creo que esto está borrando los datos del servicio. ¿Hay alguna manera de cambiar la URL a una nueva ubicación y mantener los datos en el servicio para el segundo controlador? Cuando ejecuto el código debajo, la alerta en el segundo controlador siempre está indefinida.

app.js (donde se define el servicio)

var app = angular.module('SetTrackerApp', ['$strap.directives', 'ngCookies']);

app.config(function ($routeProvider) 
{
$routeProvider
  .when('/app', {templateUrl: 'partials/addset.html', controller:'SetController'})
  .when('/profile', {templateUrl: 'partials/profile.html', controller:'ProfileController'})
  .otherwise({templateUrl: '/partials/addset.html', controller:'SetController'});
});

app.factory('userService', function() {
var userData = [
    {yearSetCount: 0}
];

return {
    user:function() {
        return userData;
    },
    setEmail: function(email) {
        userData.email = email;
    },
    getEmail: function() {
        return userData.email;
    },
    setSetCount: function(setCount) {
        userData.yearSetCount = setCount;
    },
    getSetCount: function() {
        return userData.yearSetCount;
    }
};
});

logincontroller.js: (Controlador 1 que establece el valor en servicio)

    app.controller('LoginController', function ($scope, $http, $window, userService) {

$scope.login = function() {
    $http({
        method : 'POST',
        url : '/login',
        data : $scope.user
    }).success(function (data) {
        userService.setEmail("foobar");
        $window.location.href = '/app'
    }).error(function(data) {
        $scope.login.error = true;
        $scope.error = data;
    });
}
});

appcontroller.js (Segundo controlador que intenta leer el valor del servicio)

app.controller('AppController', function($scope, $http, userService) {

$scope.init = function() {      
    alert("In init userId: " userService.getEmail());
}

});

Respuestas a la pregunta(1)

Su respuesta a la pregunta