0

我在 inspect.js 中有一个 Angular JS 工厂方法

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
    "use strict";

    angular
        .module("Myapp")
         .factory("MyAppAuthIn", ['$window', '$q', function ($window, $q) {
             var authFactory = {};
             var _request = function (config) {
                 config.headers = config.headers || {};
                 var authData = $window.sessionStorage.getItem('token');
                 if (accessToken) {
                     config.headers.Authorization = 'Bearer ' + authData;
                 }
                 return config;
             }

             var _responseError = function (rejection) {
                 if (rejection.status === 401) {
                     console.log("Some Error Here");
                 }
                 return $q.reject(rejection);
             }

             authFactory.request = _request;
             authFactory.responseError = _responseError;
             return authFactory;
         }]);
});

我在这里有 appModule.js 文件中的模块。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
    "use strict";

    angular
        .module("Myapp")
        .config(function ($httpProvider) {
            
            $httpProvider.interceptors.push('MyAppAuthIn');
            
        });
}());

我将这两个 JS 文件都包含在我的 ASPX 页面中并运行。然后我收到错误消息说

未捕获的错误:[$injector:unpr] 未知提供程序:MyAppAuthInProvider <- MyAppAuthIn<- $http <- $templateFactory <- $view <- $state

但是,如果我将所有内容都放在一个文件中,例如 myspector.js 就可以正常工作。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
    "use strict";

    angular.module("Myapp", [])
        .factory("MyAppAuthIn", ['$window', '$q', function ($window, $q) {
             var authFactory = {};
             var _request = function (config) {
                 config.headers = config.headers || {};
                 var authData = $window.sessionStorage.getItem('token');
                 if (accessToken) {
                     config.headers.Authorization = 'Bearer ' + authData;
                 }
                 return config;
             }

             var _responseError = function (rejection) {
                 if (rejection.status === 401) {
                     console.log("Some Error Here");
                 }
                 return $q.reject(rejection);
             }

             authFactory.request = _request;
             authFactory.responseError = _responseError;
             return authFactory;
         }])
        .config(['$httpProvider', function ($httpProvider) {
            $httpProvider.interceptors.push('MyAppAuthIn');
        }]);

}());

任何人都可以帮助我理解这个问题吗?...我现在差不多 2 天来解决这个问题。请帮助高度赞赏

4

1 回答 1

2

发现了问题。你angular.module()在 appModule.js 中的调用需要一个依赖列表(即使它是空的)。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
    "use strict";

    angular
        .module("Myapp", [])
        .config(function ($httpProvider) {
            
            $httpProvider.interceptors.push('MyAppAuthIn');
            
        });
}());

有关工作示例,请参见 plnkr:http: //plnkr.co/edit/tpCKl1zO4sbt605VgrCF

于 2015-04-09T18:20:04.457 回答