未知提供商 - AngularJS

时间:2016-05-15 23:17:07

标签: angularjs

我见过很多像这样的话题,但我找不到解决方案。

我收到此错误错误:

  

$ injector:unpr未知提供商

     

未知提供商:restaurantsProvider< - restaurants< - restaurantsController

这是我的控制器:

(function () {
    'use strict';

    angular
        .module('myApp')
        .controller('restaurantsController', restaurantsController);

    restaurantsController.$inject = ['$scope', 'restaurants']; 

    function restaurantsController($scope, restaurants) {

        $scope.restaurants = restaurants.query();
    }
})();

和服务文件:

(function () {
    'use strict';

    var restaurantsService = angular.module('restaurantsService', ['ngResource']);

    restaurantsService.factory('restaurantsService', ['$resource', function ($resource) {
            return $resource('/api/restaurants', {}, {
                query: { method: 'GET', params: {}, isArray: true }
            });
        }]);
})();

如果它影响某些东西,我正在使用ASP.NET。

1 个答案:

答案 0 :(得分:2)

该错误表明您正在尝试注入角度无法了解的内容。我通过您的应用结构看到了一些导致此问题的问题......

  1. 您实际上从未声明过您的" myApp"模块,您需要注入restaurantService app。

  2. 您的控制员需要一家餐馆'依赖,但该服务实际上被称为“餐馆服务'

  3. 我希望app结构看起来像这样:

        (function () {
            'use strict';
    
            var restaurantsServiceApp = angular.module('restaurantsServiceApp', ['ngResource']);
    
            restaurantsServiceApp.factory('restaurantsService', ['$resource', function ($resource) {
                    return $resource('/api/restaurants', {}, {
                        query: { method: 'GET', params: {}, isArray: true }
                    });
                }]);
        })();
    
    (function () {
        'use strict';
        var myApp = angular.module('myApp', ['restaurantsServiceApp']);
        myApp.controller('restaurantsController', restaurantsController);
    
        restaurantsController.$inject = ['$scope', 'restaurantsService']; 
    
        function restaurantsController($scope, restaurantsService) {
    
            $scope.restaurants = restaurantsService.query();
        }
    })();
    

    您的serviceApp需要在将其注入其他应用程序之前进行声明。