繁体   English   中英

如何将$ rootScope注入AngularJS工厂

[英]How to inject $rootScope into AngularJS factory

我是Angular的新手,无法找到有关如何将$ rootScope注入像我这样组织的工厂函数中的确切答案。 因此,任何帮助表示赞赏。 基本上,我只是想注入$ rootScope,因为我想在函数upload(files)中使用它。 谢谢皮特

这是我的工厂(为简洁起见,省略了一些代码):

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



    }
})();

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM