Подтвердить что ты не робот

Ошибка: Неизвестный поставщик: сотрудникиProvider <- сотрудники

У меня есть время, пытаясь понять, почему я получаю ошибку Неизвестного провайдера в Angular. Я проверил каждый другой вопрос, который я мог найти по этому вопросу, и большинство из них предлагает ошибку в инъекции зависимостей. Однако мне это не кажется, что я забываю что-то вводить. Я пытался заставить свойство разрешения работать как этот пост от Misko. Я могу отключить вывод данных о сотрудниках после их разрешения, но затем я получу ошибку Неизвестного поставщика, которая предотвращает отображение данных на странице.

Вот мой маршрутизатор:

    "use strict";

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

    app.config(appRouter);

    function appRouter ($routeProvider) {
      $routeProvider
        .when('/employees/:account_id', {
          controller: 'EmployeeCtrl',
          templateUrl: 'view/employee/view.html',
          resolve: employeeCtrl.resolve
        })

        .otherwise({ redirectTo: '/' });
    }

Вот мой контроллер

    var employeeCtrl = app.controller('EmployeeCtrl', [
      '$scope',
      'employees',
      function ($scope, employees) {
        $scope.employee = employees;
        console.log($scope.employee);
      }
    ]);

    employeeCtrl.resolve = {
      employees: function (Employee, $q, $route) {
        var deferred = $q.defer();
        console.log("current params: ", $route.current.params.account_id);
        Employee.getOne({ id: $route.current.params.account_id }, function (successData) {
          deferred.resolve(successData);
        }, function (errorData) {
          deferred.reject(errorData);
        });
        return deferred.promise;
      }
    };

И мой factory:

    angular.module('employeeServices', ['ngResource'])
      .factory('Employee', ['$resource', function ($resource) {
        return $resource('/employees/:id/json',
          {
            id: '@account_id'
          },
          {
            'save': {
              method: 'POST',
              isArray: false
            },
            'update': {
              method: 'PUT',
              params: {
                id: '@account_id'
              }
            },
            'remove': {
              method: 'DELETE',
              params: {
                id: '@account_id'
              }
            },
            'getOne': {
              method: 'GET',
              params: {
                id: '@account_id'
              },
              isArray: false
            },
            'query': {
              method: 'GET',
              params: {
                id: '@account_id'
              },
              isArray: true
            }
          }
        );
      }]);

Любые предложения были бы очень благодарны!

4b9b3361

Ответ 1

Таким образом, проблема заключалась в том, что я настраивал контроллер EmployeeCtrl через ng-контроллер внутри моего частичного представления, например:

    <div class="viewPage" ng-controller="EmployeeCtrl">

При использовании разрешения, однако, настройка контроллера должна выполняться через маршрутизатор, чтобы он был доступен во время выполнения. Я удалил ng-controller="EmployeeCtrl...

    <div class="viewPage">

... и presto, как будто ничего не случилось.

Я должен отметить, что я получил помощь от тех, пациентов, которые были на IRC-канале AngularJS...

Ответ 2

Поскольку вы определили factory под названием Employee, вы должны использовать имя точное, чтобы ссылаться на этот модуль, когда вы вводите его в контроллер.

var employeeCtrl = app.controller('EmployeeCtrl', [
      '$scope',
      'employees',

Изменить на

var employeeCtrl = app.controller('EmployeeCtrl', [
      '$scope',
      'Employee',