I'm with a problem with binding an object of a Factory and a Controller and it's view.
I am trying to get the fileUri of a picture selected by the user. So far so good. The problem is that I am saving the value that file to overlays.dataUrl. But I am referencing it on the view and it isn't updated. (I checked and the value is actually saved to the overlays.dataUrl variable.
Here goes the source code of settings.service.js:
(function () {
    "use strict";
    angular
    .module("cameraApp.core")
    .factory("settingsService", settingsService);
    settingsService.$inject = ["$rootScope", "$cordovaFileTransfer", "$cordovaCamera"];
    function settingsService($rootScope, $cordovaFileTransfer, $cordovaCamera) {
         var overlays = {
             dataUrl: "",
             options: {
                 sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
                 destinationType: Camera.DestinationType.FILE_URI
             }
         };
         var errorMessages = [];
         var service = {
             overlays: overlays,
             selectOverlayFile: selectOverlayFile,
             errorMessages: errorMessages
         };
         return service;
         function selectOverlayFile() {
             $cordovaCamera.getPicture(overlays.options).then(successOverlay, errorOverlay);
         }
         //Callback functions
         function successOverlay(imageUrl) {
        //If user has successfully selected a file
             var extension = "jpg";
             var filename = getCurrentDateFileName();
             $cordovaFileTransfer.download(imageUrl, cordova.file.dataDirectory + filename + '.' + extension, {}, true)
                 .then(function (fileEntry) {
                      overlays.dataUrl = fileEntry.nativeURL;
                 }, function (e) {
                      errorMessages.push(e);
                 });
    }
    function errorOverlay(message) {
        //If user couldn't select a file
        errorMessages.push(message);
        //$rootScope.$apply();
    }
    }
})();
Now the controller:
(function () {
    angular
    .module("cameraApp.settings")
    .controller("SettingsController", SettingsController);
    SettingsController.$inject = ["settingsService"];
    function SettingsController(settingsService) {
        var vm = this;
        vm.settings = settingsService;
        activate();
        //////////////////
        function activate(){
           // Nothing here yet
        }
    }
})();
Finnally on the view:
<h1>{{vm.settings.overlays.dataUrl}}</h1>
<button id="overlay" class="button"
                ng-click="vm.settings.selectOverlayFile()">
            Browse...
</button>
Whenever I change the value in the factory, it doesn't change in the view.
Thanks in advance!
 
     
    