将 Angular 服务注入控制器会导致 $injector:unpr 错误(使用 AngularBooter)

Injecting a Angular service into controller results in $injector:unpr error (using AngularBooter)

我在我的应用程序中使用 AngularBooter 作为 Angular。

这是我的代码:

emp.boot();

emp.services.SocialService = ['$http', '$q', function ($http, $q) {

    var deferred = $q.defer();

    $http.get('/api/feed').then(function (data) {
        deferred.resolve(data);
    });

    this.getStatuses = function ()
    {
        return deferred.promise;
    }

}];

emp.controllers.StatusesController = ['$scope','SocialService', '$interval',  function($scope, SocialService, $interval) {

    var statuses = SocialService.getStatuses();

    statuses.then(function(data) {
        $scope.statuses = data;
        console.log($scope.statuses);
    });
}];

据我了解,错误:Error: [$injector:unpr] 表示服务未正确注册或实施,我尝试了一些方法,但仍然 运行 遇到同样的问题。任何想法。

两个问题:

1) 在注册你的东西之前你正在启动(至少在你提供的代码中)。定义好所有内容后,在最下面做emp.boot()

2) 您的服务没有 returning 任何东西。例如,如果您在服务函数的最底部添加 return {};,它应该神奇地不再抛出错误,但您可能想要 return 比那更有趣的东西。

您可以通过取消注释 return 对象所在的行并看到 Angular 再次开始工作来看到这一点。 http://codepen.io/alex-wilmer/pen/QbwNGz?editors=101

我想你可能想要这样的东西:

emp.services.SocialService = ['$http', '$q', function ($http, $q) {
  var deferred = $q.defer();

  $http.get('/api/feed').then(function (data) {
    deferred.resolve(data);
  });

  return {
    getStatuses = function () { // don't mix brace placement!
      return deferred.promise;
    }
  };
}];