将服务注入控制器不工作

时间:2016-10-01 12:43:20

标签: angularjs

enter image description here是angularjs的新手。我正在尝试使用角度服务来发布数据,但是它会抛出错误

angular.js:12520错误:[$ injector:unpr]未知提供者:frontendServiceddProvider< - frontendServicedd< - CustSignupCtrl

service.js

Activity

customer_signup.js

app.service('frontendService', function frontendService ($http, $q, $rootScope){

        var list = this;


        list.registerCust = function(data){
            var defer = $q.defer();

            $http({
                url: $rootScope.endPoint,
                method: "POST",
                data: data
            })
            .success(function(res){
                console.log("Successfull!");
                defer.resolve(res);
            })
            .error(function(err, status){
                console.log("Failed !");
            })

            return defer.promise;
        }

        return list;

    });

我已经在index.html中引用了两个js文件..没有得到错误的地方..任何人都可以帮助

2 个答案:

答案 0 :(得分:2)

inject

无论你function进入控制器,都应该采用相同的顺序。 删除<Modal />内注入内容的引号。

答案 1 :(得分:2)

这可能是依赖注入不匹配类问题

当AngularJS在[]

中看到它时,会将对象注入函数

例如,如果在js文件中声明一个函数,就像这样

var app = angular.module('app',[]);
app.controller('maincntrl',function($scope){

});
var search = function($scope,searchtext,searchfilters,searchareas)
{
   return 'result'
}

console.log(angular.injector.annotate(search));

您将在控制台中获得的结果将是

["$scope","searchtext","searchfilters","searchareas"]

AngularJS将函数参数解析为数组

它遍历每个数组元素,当它看到"$scope"时,它会将范围object注入该位置

现在您使用的语法基本上用于minification

所以根据你的声明

app.controller('CustSignupCtrl', ['$scope','frontendService', '$filter','frontendService', '$http', 'editableOptions', 'editableThemes','notify','notification','$appConstants',
  function('$scope', '$filter','frontendService', '$http','editableOptions', 'editableThemes','notify','notification','$appConstants'){

});

所以

$scope--> shall be injected into $scope
frontendService-->shall be injected into $filter
$filter--> shall be injected into frontendService
.
.
.
so on

此外,由于您已将function参数声明为strings,因此发生了错误(您在评论中提到),在这种情况下,依赖注入不会发生。修复这些问题将解决您的问题