错误:[$ injector:unpr]在控制器中注入服务时

时间:2014-11-08 16:50:24

标签: angularjs

我知道有关此错误的类似问题在SO之前已被多次询问,我已经阅读了答案,但据我所知,我的代码设计正确。但它当然不能得到这个错误。我的应用程序有一些服务和一些控制器,并且除了一个特定的服务/控制器之外它们都由于某种原因一起工作。我已经能够将代码删除到最低限度,如下所示。从具有.. ng-controller="TestController" ..的视图触发TestController时出现错误,并且Chrome控制台中的错误消息为:

  

错误:[$ injector:unpr] http://errors.angularjs.org/1.2.15/ $ injector / unpr?p0 =%24scopeProvider%20%3C-%20%24scope%20%3C-%20Loyper       在错误(本机)..

我一直在努力解决这个问题,并且无法看到这个服务(Loyper)和控制器(TestController)在注入方面的定义不同于那些正在工作的服务。任何帮助将不胜感激。

var app = angular.module('testapp', [
"ngRoute",
"mobile-angular-ui"

]);

app.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) {
$routeProvider.
when('/', {
    templateUrl: 'main.html',
    controller: 'TestController'
}).
when('/loyper', {
    templateUrl: 'loyper.html',
    controller: 'LoypeController'
}).
otherwise({
    redirectTo: '/'
});

$httpProvider.defaults.useXDomain = true;

}]);

app.service('Loyper', ['$scope', '$http', function($scope, $http) {

var cached = false;
var loyper = {};
var message;

return {
    foo: 'bar'
}

}]);

app.controller('TestController', ['$scope', 'Loyper', function($scope, Loyper) {

angular.extend($scope, {
    getLoyper: function() {
        return Loyper.foo;
    }

});

$scope.loypelist = $scope.getLoyper();

}]);

1 个答案:

答案 0 :(得分:5)

服务无法注入$scope,因为服务是单例,而每个控制器和许多指令都有自己的范围。问题就在这一行:

app.service('Loyper', ['$scope', '$http', function($scope, $http) {

应该是

app.service('Loyper', ['$http', function($http) {

事实上,由于您的服务并未使用$ http,因此它也不应将$ http作为参数。