Как интегрировать PhoneGap Camera с AngularJS

Я пытаюсь выяснить, как лучше интегрировать камеру с телефонной пробкой в AngularJS. Первым методом, который я попробовал, было создание фабрики с обещаниями, которые вызываются из ng-click. Другим способом было бы поместить код прямо в ng-click внутри контроллера, но тогда его нельзя использовать повторно. Может быть, из этого можно сделать директиву? Я уверен, что есть и несколько других способов. Каким был бы «angularjs» путь?

Вот пример фабричного метода, который я попробовал ....

HTML:

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

Контроллер:

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();
    }
}

Фабрика:

.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;
        }
    }
})

Ответы на вопрос(2)

Ваш ответ на вопрос