【问题标题】:IIFE breaks interceptor - unknown providerIIFE 中断拦截器 - 未知提供者
【发布时间】:2015-03-10 06:33:43
【问题描述】:

我正在使用拦截器将 JWT 令牌添加到我的 http 调用中。我的代码可以像这样正常工作:

angular
    .module("jwtKickStart")
    .factory("authInterceptorService", authInterceptorService);

authInterceptorService.$inject = ["$injector", "$q", "$timeout"];
function authInterceptorService($injector, $q, $timeout) {

    var $state, loginModal, $http;

    //...

但如果我将其包装在 IIFE 中,则会收到 Unknown Provider 错误:

(function () {
"use strict";

angular
    .module("jwtKickStart")
    .factory("authInterceptorService", authInterceptorService);

authInterceptorService.$inject = ["$injector", "$q", "$timeout"];
function authInterceptorService($injector, $q, $timeout) {

    var $state, loginModal, $http;

    //...

我不能使用 IIFE 吗?

编辑:这里有更多细节

错误信息是这样的:http://errors.angularjs.org/1.3.8/$injector/unpr?p0=authInterceptorServiceProvider%20%3C-%20authInterceptorService%20%3C-%20%24http%20%3C-%20%24templateFactory%20%3C -%20%24view%20%3C-%20%24state

源代码可在此处获得: https://github.com/capesean/JWTKickStart/tree/master/JWTKickStart.APP/app

【问题讨论】:

  • 能否提供完整的错误信息和更多代码?
  • 你为什么要包裹在 IIFE 中?
  • @ps0604 我正在尝试遵循 John Papa 的风格指南,它在任何地方都使用 IFFE(据我所知)。如果有理由不这样做,那么当然。我只是没想到它会破坏代码。

标签: angularjs angularjs-injector


【解决方案1】:

尝试像这样注入:

(function () {
"use strict";

angular
    .module("jwtKickStart")
    .factory("authInterceptorService",["$injector","$q","$timeout" authInterceptorService]);

function authInterceptorService($injector, $q, $timeout) {
// your code
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2016-11-29
    • 2018-09-28
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多