gpt4 book ai didi

angularjs - 错误 : [$injector:unpr] when injecting services in a controller

转载 作者:行者123 更新时间:2023-12-03 08:09:59 25 4
gpt4 key购买 nike

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

Error: [$injector:unpr] http://errors.angularjs.org/1.2.15/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope%20%3C-%20Loyper at Error (native)..

我已经为此苦苦挣扎了一段时间,并且看不到这个服务 (Loyper) 和 Controller (TestController) 是在注入(inject)方面定义的,而不是那些正在工作的。任何帮助将不胜感激。

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();

}]);

最佳答案

服务不能用 $scope 注入(inject),因为服务是单例的,而每个 Controller 和许多指令都有自己的范围。因此,问题出在这一行:

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

应该是

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

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

关于angularjs - 错误 : [$injector:unpr] when injecting services in a controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com