如何将$ rootScope注入AngularJS工厂

时间:2017-04-25 00:49:50

标签: angularjs angularjs-rootscope

我对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
        }



    }
})();

1 个答案:

答案 0 :(得分:1)

它与您通常注入依赖项的方式相同,

 fileManager.$inject = ['$rootScope','$q', 'fileManagerClient', 'appInfo']
 function fileManager($rootScope,$q, fileManagerClient, appInfo) {