Roteador ui angular obter dados assíncronos com resolução

Eu quero exibir um formulário com dados correspondentes ao item editado. eu usoui-router para roteamento. Eu defini um estado:

myapp.config(function($stateProvider) {

    $stateProvider.
    .state('layout.propertyedit', {
        url: "/properties/:propertyId",
        views : {
            "contentView@": {
                templateUrl : 'partials/content2.html', 
                controller: 'PropertyController'
            }
        }
    });

EmPropertyController, Quero definir$scope.property com dados provenientes da seguinte chamada (Google Cloud Endpoints):

    gapi.client.realestate.get(propertyId).execute(function(resp) {
        console.log(resp);
    });

Não sei se posso usarresolve porque os dados são retornados de forma assíncrona. eu tentei

    resolve: {
        propertyData: function() {
            return gapi.client.realestate.get(propertyId).execute(function(resp) {
                console.log(resp);
            });
        }
    }

Primeira edição, opropertyId é indefinido. Como você consegue opropertyId deurl: "/properties/:propertyId"?

Basicamente eu quero definir$scope.property emPropertyController aoresp objeto retornado pela chamada assíncrona.

EDITAR:

myapp.controller('PropertyController', function($scope, , $stateParams, $q) {

    $scope.property = {};

    $scope.create = function(property) {
    }

    $scope.update = function(property) {
    }

function loadData() {
    var deferred = $q.defer();

    gapi.client.realestate.get({'id': '11'}).execute(function(resp) {
        deferred.resolve(resp);
    });

    $scope.property = deferred.promise;
}

});

questionAnswers(4)

yourAnswerToTheQuestion