AngularJS - 未正确注入工厂的服务

时间:2017-10-20 06:39:24

标签: javascript angularjs dependency-injection

首先是我的factorys代码:

angular.module('myModule').factory('actionsService', ['$http', '$window', '$q', 'jsUtils', 'dataService', 'perspectivesService', function($http, $window, $q, jsUtils, dataService, perspectivesService) {
    'use strict';

    //some functions

    function buildMenuItem(item, targets, callInvoker) {
        if(...) {
        //some code
        } else {
            perspectivesService.removeExtension(item.id);
        }
    } 
    //some more functions
}]);        

我收到以下错误:

  

错误TypeError:perspectivesService.removeExtension不是函数

我知道问题不是来自我的perspectivesService,因为我以相同的方式将它注入控制器并调用相同的函数(removeExtension)并且它工作正常。这里依赖注入显然存在问题,但我无法弄清楚究竟是什么。从我所读到的内容来看,将我的服务注入工厂不应该是一个问题,它的完成方式与将它注入控制器的方式完全相同。任何想法我都会这样做。我在这做错了吗?

有我的perspectives服务代码:

(function () {
    'use strict';
    angular.module('myModule').service('perspectivesService', perspectivesService);
    perspectivesService.$inject = ['$http'];
    function perspectivesService($http){
        return {
            removeExtension: removeExtension,
            setEditEnabled: setEditEnabled,
            isEditEnabled: isEditEnabled
        };
        function removeExtension(ext){
            $http({
                method: 'POST',
                url: 'remove',
                params: { removeExt: ext
                }
            }).then(function(resp){
                console.log('Its was successfull');
            });
        }

        function setEditEnabled(edit){
            localStorage.setItem('editMode', edit);
        }

        function isEditEnabled(){
            if(localStorage.getItem("editMode") === 'true'){
                return true;
            }else if(localStorage.getItem("editMode") === 'false') {
                return false;
            }else{
                return false;
            }
        }
    }
})();

0 个答案:

没有答案