【问题标题】:Not able to call service in angularjs无法在angularjs中调用服务
【发布时间】:2016-01-27 09:47:48
【问题描述】:

我收到以下错误:

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

【问题讨论】:

  • 粘贴您的代码,或提供一个有效的 plnkr
  • var app = angular.module('app', []) ,缺少“;”

标签: angularjs service factory


【解决方案1】:

在:

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

您正在注入不存在的myService。所以,改成:

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

【讨论】:

    【解决方案2】:

    您将您的工厂定义为stringService,但您尝试将其注入为myService,如果您按照以下方式进行操作,它应该可以工作:

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

    【讨论】:

      【解决方案3】:

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

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

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

      您应该定义一次模块。

      【讨论】:

        【解决方案4】:

        你的代码定义了两个名为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);
        }]);
        

        【讨论】:

          猜你喜欢
          • 2015-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-07
          • 1970-01-01
          相关资源
          最近更新 更多