You need to use $apply() if you wish to update the scope from outside of the angular framework (for example from browser DOM events, setTimeout, XHR or third party libraries). More info available at http://docs.angularjs.org/api/ng.$rootScope.Scope.
function TestCtrl($scope){
$scope.contactsList = [];//UI template is bound to this list
//Assuming the gapi client is already loaded
gapi.client.contactendpoint.list().execute(function(resp) {
if (!resp.code) {
$scope.$apply(function(scope) {
scope.contactsList = resp.items;
});
} else {
alert("Error, response is: " + angular.toJson(resp));
}
});
}