I am trying to use a service to set title in controller1 and then access title in controller2. 
sharedProperties.setTitle(title) works in controller1, but when I try to get the title in controller2, it gets "title" (the initial value) instead of the new value. 
I've also tried storing title in an object but it didn't work.
app.service('sharedProperties', function () {
    var title = "title"
    return {
        getTitle: function () {
            return title;
        },
        setTitle: function (val) {
            title = val;
        }
    }
});
app.controller('controller1', ['$scope', 'sharedProperties', function ($scope, sharedProperties) {
    $('body').on("click", "button[name=btnListItem]", function () {
        // gets the title
        var title = $(this).text();
        // sets the title for storage in a service
        sharedProperties.setTitle(title);
    });
}]);
app.controller('controller2', ['$scope', 'sharedProperties', function ($scope, sharedProperties) {
    $scope.sharedTitle = function() { 
            return sharedProperties.getTitle(); 
    }; 
}]);
And in my view, I have {{ sharedTitle() }} which should, as I understand it, update the title text with the new title.
Also, in case this is relevant: the two controllers are linked to two different html pages.
What am I doing wrong?
EDIT Updated button listener:
$('body').on("click", "button[name=btnListItem]", function () {
    // gets the text of the button (title)
    var title = $(this).text();
    sharedTitle(title);
    alert(sharedProperties.getTitle());
    document.location.href = '/nextscreen.html';
});
$scope.sharedTitle = function (title) {
    sharedProperties.setTitle(title);
};
 
     
     
     
    