我的代码如下。以下代码显示执行以下代码时的依赖性错误。任何帮助都会很棒。还需要Cookie依赖...
错误是
(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) {
});
})();
代码app.js
<!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>
HTML:
Period
...
答案 0 :(得分:2)
每当您收到角度错误时,您无法真正解码错误消息的含义。尝试加载非最小版本的角度,这将为您提供更具描述性的错误消息,例如在您的情况下,您可能会看到如下内容:
未捕获错误:[$ injector:modulerr]由于以下原因导致无法实例化模块plunker: 错误:[$ injector:pget]提供者'loginChek'必须定义$ get factory方法。
非常明显的是,您的 provider 没有与之关联的服务构造函数。它只定义了在配置阶段期间可以访问的提供者函数,这是不够的。例如:
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;
}
}
}
});
<强> plnkr 强>
Doc说:只有在要为应用程序范围的配置公开API时才应使用提供程序配方,该配置必须在应用程序启动之前进行。这通常仅适用于可重用服务,其行为可能需要在应用程序之间略有不同。
提供程序方法logFn
无法真正使用任何服务,因为服务尚未实例化(例如,您无法直接在提供程序函数中注入$ http服务,即.provider('loginChek',function($http){
),但您可以根据需要注入其他提供商。因此,它们通常仅用于您的服务的简单配置。
答案 1 :(得分:0)
尝试按照以下方式声明您的提供商:
app.provider('loginChek',function(){
this.$get = function(){
return {
logFn: function() { console.log('test') }
};
};
});
答案 2 :(得分:0)