Q:

Resolving promise value in Html -> Ctrl -> Factory -> Resource chain on deferred object

In edit.html
<div>timezone: {{userPreferencesCtrl.preference.response.format}}<div>

In UserPreferencesCtrl
 this.preference = UserPreferencesFactory.userPreference;

In UserPreferencesFactory
Basically there are two rest-calls. 
Fist - gets all user-preferences and on its success it call another rest-call - getting particular user-preference.
var factory = this;

factory.userPreference = $q.defer();
...    
UserPreferencesResource.all().$promise.then(          
     function(data) {
       // some code
       if (foundRightGuy) {             
          // get preference by ID
          UserPreferencesResource.get( {id: pref.preferenceID}).$promise.then(
            function(data) {
               factory.userPreference.resolve(data); // resolving the promise
             }
          );
        }
     }
 );

return this;     }]);

The problem is that on the Controller side I see the resolved promise like this:
{"promise":{"$$state":{"status":1,"value":{"response":{"preferenceID":2,"user_name":"name3", "format":"keyvalue"}}}}}

Which does not rendered on the edit.html.
How to make it show preference.response.format value on the screen?
UPDATE: (angularjs 1.3.x)
If instead of $q.defer(); I put  UserPreferencesResource.get( {id: 2}) call - then all renders well. Just saying that all variables are good (no misspelling or something).

A:

What you get when you call UserPreferencesFactory.userPreference is the deffered object, which has the promise as a property. So you have to unwrap that promise.
Controller:
this.preference;

UserPreferencesFactory
   .userPreference
   .promise
   .then(function(data) {
     this.preference = data;
   });

