Как внедрить $rootScope в фабрику AngularJS

Я относительно новичок в Angular и не смог найти точного ответа на вопрос, как внедрить $rootScope в фабричную функцию, организованную как моя. Поэтому любая помощь приветствуется. По сути, я просто пытаюсь внедрить $rootScope, потому что хочу использовать его в функции загрузки (файлов). . . . Спасибо, Пит.

Вот моя фабрика (некоторый код для краткости опущен):

(function () {
    'use strict';

    angular
        .module('ooApp.controllers')
        .factory('fileManager', fileManager);


    fileManager.$inject = ['$q', 'fileManagerClient', 'appInfo'];

    function fileManager($q, fileManagerClient, appInfo) {
        var service = {
            files: [],
            load: load,
            upload: upload,
            remove: remove,
            fileExists: fileExists,
            status: {
                uploading: false
            }
        };

        return service;



        function load() {

           //Do Stuff
        }


        function upload(files) {
            //ToDo Check that file extension exists here


            service.status.uploading = true;
            appInfo.setInfo({ busy: true, message: "uploading files" });

            var formData = new FormData();

            angular.forEach(files, function (file) {
                formData.append(file.name, file);
            });


            return fileManagerClient.save(formData)
                                        .$promise
                                        .then(function (result) {
                                            if (result && result.files) {
                                                result.files.forEach(function (file) {
                                                    if (!fileExists(file.name)) {
                                                        service.files.push(file);
                                                    }
                                                });
                                            }

                                            appInfo.setInfo({ message: "files uploaded successfully" });

                                            return result.value;
                                        },
                                        function (result) {
                                            appInfo.setInfo({ message: "something went wrong: " + result.data.message });
                                            return $q.reject(result);
                                        })
                                        ['finally'](
                                        function () {
                                            appInfo.setInfo({ busy: false });
                                            service.status.uploading = false;
                                        });
        }



        function remove(file) {
            //Do Stuff
                        }

        function fileExists(fileName) {
            //Do Stuff
        }



    }
})();

person Pete    schedule 25.04.2017    source источник
comment
Я думаю, вы можете напрямую внедрить $rootScope как $q   -  person Nagarjuna Reddy    schedule 25.04.2017


Ответы (1)


Это так же, как вы обычно вводите зависимости,

 fileManager.$inject = ['$rootScope','$q', 'fileManagerClient', 'appInfo']
 function fileManager($rootScope,$q, fileManagerClient, appInfo) {
person Sajeetharan    schedule 25.04.2017
comment
Спасибо, Саджитаран, я смог заставить это работать. - person Pete; 29.04.2017