提供程序依赖项在 Config AngularJS 中不起作用



我的代码如下。下面的代码显示了执行以下代码时的依赖项错误。任何帮助都会很棒。还需要 Cookie 依赖项...

错误是

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.15/$injector/modulerr?p0=achieverpayroll&p1…A%2F%2Flocalhost%3A8080%2Fachieverpayroll%2Fjs%2Fangular.min.js%3A17%3A381)

代码应用.js

(function(){
    var app=angular.module('achieverpayroll',['ngRoute']);

    app.provider('loginChek',function(){
        this.logFn=function(){
            console.log('test');
        };
    });
    app.config(['$routeProvider', '$httpProvider','loginChekProvider', function($routeProvider, $httpProvider,loginChekProvider){
        loginChekProvider.logFn();
        $routeProvider.when('/home',{
            templateUrl: 'templates/home.html',
            controller: 'categoryController'
        }).
        otherwise({
            redirectTo: '/home'
        });
    }]);
    app.controller('categoryController', function($scope, $http) {
    });
})();

.HTML:

<!DOCTYPE html>
<html ng-app="achieverpayroll">
<head>
    <meta charset="ISO-8859-1">
    <META http-equiv="X-UA-Compatible" content="IE=10">
    <link href="css/style.css" rel="stylesheet" type="text/css"/>
    <script src="js/angular.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="js/angular-route.min.js"></script>
    <script type="text/javascript" src="js/angular-cookies.js"></script>
    <script src="js/app.js" type="text/javascript"></script>

....

每当您遇到角度错误并且无法真正解码错误消息的含义时。尝试加载 angular 的非最小版本,这将为您提供更具描述性的错误消息,例如,在您的情况下,您可能会看到类似以下内容:

未捕获的错误: [$injector:modulerr] 由于以下原因,无法实例化模块 plunker: 错误: [$injector:pget] 提供程序"loginChek"必须定义$get工厂方法。

很明显,您的提供程序没有与之关联的服务构造函数。它只是定义了一个可以在配置阶段访问的提供程序函数,这还不够。例如:

app.provider('loginChek',function(){
      var loggedIn = false;
        //This is accessible only during the config phase before the
        //service loginCheck is even instantiated
        this.logFn=function(){
            loggedIn = true;
            console.log('test');
        };
        //When you inject loginCheck anywhere else you will get a service instance
        //with one method hasLoggedIn
        this.$get = function(){
          return {
            //You can inject services stuffs here like
            //hasLoggedIn:function($http, $q...)
            hasLoggedIn:function(){
              return loggedIn;
            }
          }
        }
    });

普罗提

医生 说:

仅当您想要公开必须在应用程序启动之前进行的应用程序范围配置的 API 时,才应使用提供程序配方。这通常只对可重用服务感兴趣,这些服务的行为可能需要在应用程序之间略有不同。

提供程序方法logFn不能真正使用任何服务,因为服务尚未实例化(例如,您不能直接在提供程序函数中注入$http服务,即.provider('loginChek',function($http){),但您可以根据需要注入其他提供程序。因此,它们通常仅用于服务的简单配置。

尝试像这样声明您的提供程序:

app.provider('loginChek',function(){
    this.$get = function(){
        return {
            logFn: function() { console.log('test') }
        };
    };
});

当模块由于某些异常而无法加载时,会发生此错误。

您是否安装了ngRoute模块?

https://code.angularjs.org/1.3.15/docs/api/ngRoute

相关内容

  • 没有找到相关文章

最新更新