Angular service and watching a variable
<p>I have an angular service that gets an <code>$http</code> promise from a factory making a REST call, which works fine.:</p>

<pre><code>var UserService = function($cookies, DataFactory, jsonHelper, $q) {
    var USER_KEY = 'user';
    var USERNAME_KEY = 'username';

    var svcData = {
        u: null,
        b: null,
    }

    var service = {
        setUser : function(user){
            svcData.u = user;
            $cookies.put(USER_KEY, user.id);
        },
        getUser : function(){
            if(svcData.u === null){
                DataFactory.getPrincipalName().then(function(adata){
                    DataFactory.getBDUser(adata.data.username).then(function(data){
                        var reg = {};
                        jsonHelper.setupRegistry(data.data,
                                                 reg);
                        jsonHelper.resolveReferences(
                            data.data, reg, 5);
            console.log("Request is back");
                        svcData.u = data.data;
                    });
                });
            }
            return svcData.u;
        }
 ... snipped ...
</code></pre>

<p>In my controller, I do:</p>

<pre><code>$scope.$watch($scope.user, function(newUser){
    console.log($scope.user);
    console.log("USER HERE");
    doSomeStuff();
});
$scope.user = UserService.getUser();
</code></pre>

<p>The problem is that watch gets fired when I first assign <code>$scope.user</code> (it is null), then I get the console message "Request is back" but the watch function does not fire again.</p>

<p>Why, and how do I do this?</p>