无法在angularjs中调用服务

时间:2016-01-27 09:47:49

标签: angularjs service factory

我收到以下错误:

Error: [$injector:unpr] Unknown provider: myServiceProvider <- myService 

在angularjs中调用服务时请帮我解决这个问题

var app = angular.module('app', [])

app.controller('myController', ['$scope', 'stringService', function ($scope, stringService) {
    $scope.output = stringService.processString(input);
}]);

var app = angular.module('app', []);
app.factory('stringService', function(){
    return{
        processString: function(input){
            if(!input){
                return input;
            }

            var output = "";
            for(var i = 0; i < input.length; i++){
                if(i > 0 && input[i] == input[i].toUpperCase()){
                    output = output + " ";
                }
                output = output + input[i];
            }
            return output;
        }
    }
});

4 个答案:

答案 0 :(得分:0)

在:

['$scope', 'myService', function ($scope,   stringService)

您正在注射不存在的myService。所以,改为:

['$scope', 'stringService', function ($scope,   stringService)

答案 1 :(得分:0)

您将工厂定义为stringService,但是您尝试将其注入myService,如果您按照以下方式执行此操作:

app.controller('myController', ['$scope', 'stringService', function ($scope, stringService) {
    $scope.output = stringService.processString(input);
}]);

答案 2 :(得分:0)

将您的第二个模块行更改为:

var app = angular.module('app');

如果传递2个参数,则定义一个新模块。如果传递一个参数,那么它会进行模块查找。

您应该定义一次模块。

答案 3 :(得分:0)

你的代码定义了两个app app app,myService不存在,应该改为stringService, 我认为你的代码应该是这样的:

var app = angular.module('app', []);
app.factory('stringService', function(){
return{
processString: function(input){
if(!input){
return input;
}
var output = "";
for(var i = 0; i < input.length; i++){
if(i > 0 && input[i] == input[i].toUpperCase()){
output = output + " ";
}
output = output + input[i];
}
return output;
}
}
});


app.controller('myController', 
['$scope', 'stringService', function ($scope, stringService) {
$scope.output = stringService.processString(input);
}]);