I have a base service which looks like this:
.service('BaseImageService', ['$q', 'ApiHandler', 'UploadService', function ($q, api, uploadService) {
    // Get our api path
    var apiPath = 'logos';
    // Creates our logo
    var _createLogo = function (model) {
        // Handle our uploads
        return _handleUploads(model).then(function () {
            // Create our logo
            return api.post(apiPath, model);
        });
    };
    // Edit our logo
    var _editLogo = function (model) {
        // Handle our uploads
        return _handleUploads(model).then(function () {
            // Create our logo
            return api.put(apiPath, model);
        });
    };
    // Handles our files
    var _handleUploads = function (model) {
        // Create a promises array
        var promises = [];
        // Get our file
        var file = model.file,
            old = model.old;
        // If we have a file
        if (file) {
            // Try to upload the file
            promises.push(uploadService.upload(model.file).then(function (response) {
                // Update our model
                model.path = response.path;
                model.thumbnail = response.thumbnail;
            }));
            // If we have an old model
            if (old) {
                // Delete both our files
                promises.push(uploadService.delete(old.path));
                promises.push(uploadService.delete(old.thumbnail));
            }
        }
        // After all promises have completed
        return $q.all(promises);
    };
    // Create our service
    var service = {
        // Update our api path
        updateApiPath: function (path) {
            // Set the api path
            apiPath = path;
        },
        // Gets a list of logos
        list: function (t) {
            if (t) {
                console.log(apiPath);
            }
            // Get our logo
            return api.get(apiPath);
        },
        // Get a single logo
        get: function (id) {
            // Get our logo
            return api.get(apiPath, { id: id });
        },
        // Create our logo
        save: function (model) {
            // If we are editing
            if (model.id) {
                // Edit our logo
                return _editLogo(model);
                // If we are creating
            } else {
                // Create our logo
                return _createLogo(model);
            }
        },
        // Deletes our logo
        delete: function (id) {
            // Delete our logo
            return api.delete(apiPath, { id: id });
        },
        // Prepare for editing
        prepareForEditing: function (model) {
            // Create our old object
            model.old = {
                path: model.path,
                thumbnail: model.thumbnail
            };
        }
    };
    // Return our service
    return service;
}])
and then I have a few services which "inherit" this service, like this:
.service('ImageService', ['BaseImageService', function (baseService) {
    // Get our api path
    var apiPath = 'images';
    // Update the apiPath
    baseService.updateApiPath(apiPath);
    // Return our service
    return baseService;
}])
.service('LogoService', ['BaseImageService', function (baseService) {
    // Get our api path
    var apiPath = 'logos';
    // Update the apiPath
    baseService.updateApiPath(apiPath);
    // Return our service
    return baseService;
}])
.service('PlayerTextService', ['BaseImageService', function (baseService) {
    // Get our api path
    var apiPath = 'playerText';
    // Update the apiPath
    baseService.updateApiPath(apiPath);
    // Return our service
    return baseService;
}])
I thought that this was working fine. But I have this page that calls all 3 services (ImageService, LogoService and PlayerTextService) sequentially. On the first view of the page everything is fine, if I navigate away and then come back the images service actually pulls back thing from the player text service. Now I know this is because of services being singletons but I am not sure how to fix my issue.
Can anyone give me a hand?
I have added a codepen with an attempted solution:
http://codepen.io/r3plica/pen/ONVBJO
Attempt 2
 
     
     
     
     
    