如何从AngularJS中的控制器调用工厂/服务?错误:组件$ injector中的未知提供程序错误

时间:2014-02-13 12:39:47

标签: angularjs

我正在使用AngularJS开发移动应用程序。首先,我通常会在控制器内调用所有$ http请求。现在我已经阅读了更多关于Angular的信息,我发现这可能不是最好的做法,特别是如果你想在控制器之间共享数据。所以我现在重新发明我的控制器/服务系统。

现在问题。我正在从控制器调用一个服务,但是我收到一个错误:组件$ injector中的未知提供程序错误

有人可以帮助我吗?

代码:

listdnModule.factory('getActiveDnService', function ($scope, $http) {
    return {
            getActiveDnSvc: function (id) {
                return $http({
                    method: 'POST', url: 'svc.aspx/getActiveDN', data: "{'id':" + id + "}", cache: true
                });
            }
    };
});

listdnModule.controller('listdnCtrl', ['$scope', '$http', 'getActiveDnService', function ($scope, $http, svc) {
    $scope.mjav = 1;
    svc.getActiveDnSvc($scope.mjav).success(function (data) {
        $scope.listdn = data.d;
    });
}]);

1 个答案:

答案 0 :(得分:3)

从注入的服务依赖项中删除$scope$scope只能注入控制器,并作为angular中指令的链接函数的参数传入。您的服务应该是:

listdnModule.factory('getActiveDnService', function ($http) {
    return {
            getActiveDnSvc: function (id) {
                return $http({
                    method: 'POST', url: 'svc.aspx/getActiveDN', data: "{'id':" + id, cache: true
                });
            }
    };
});