Cómo integrar la cámara Phonegap con AngularJS

Estoy tratando de descubrir la mejor práctica para integrar la cámara de Phonegap con AngularJS. El primer método que probé fue crear una fábrica con promesas a las que se llama desde ng-click. Otra forma sería colocar el código dentro de la tecla ng-click dentro del controlador, pero luego no es reutilizable. Tal vez una directiva podría hacerse a partir de esto? Estoy seguro de que hay algunas otras formas también. ¿Cuál sería la forma "angularjs"?

Aquí hay un ejemplo del método de fábrica que probé ...

El HTML:

<button ng-click="takepic">Take Picture</button>

El controlador:

function picturePageCtrl($scope, Camera) {
    $scope.takepic = function() {
        // I'd like to push this into an array of "pics" here.
        // but it is hard to push() with promises.
        Camera.getPic();
    }
}

La fábrica:

.factory('Camera', function($q) {
    var deferred = $q.defer();
    return {
        getPic: function() {
            navigator.camera.getPicture(
                function (imageURI) {
                    deferred.resolve(imageURI);
                },
                function (message) {
                    deferred.reject(message);
                },
                {
                    quality: 50, 
                    destinationType: Camera.DestinationType.FILE_URI
                }
            );
            return deferred.promise;
        }
    }
})

Respuestas a la pregunta(2)

Su respuesta a la pregunta