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

Angularjs 将角度服务注入控制器会导致$injector:unpr错误(使用AngularBooter),angularjs,angularjs-service,angularjs-controller,Angularjs,Angularjs Service,Angularjs Controller,在我的应用程序中,我正在使用for 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.ge

在我的应用程序中,我正在使用for 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);
    });
}];
据我所知,错误:[$injector:unpr]是服务未正确注册或实现的标志,我尝试了一些方法,但仍然遇到相同的问题。任何想法。

两个问题:

1至少在您提供的代码中注册您的内容之前,您正在启动。定义完所有内容后,在底部执行emp.boot

2您的服务没有返回任何内容。例如,如果添加return{};在服务函数的最底层,它应该神奇地不再抛出错误,但您可能希望返回比这更有趣的内容

通过取消对返回对象的行的注释,可以看到这一点,并看到Angular重新开始工作。

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

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;
    }
  };
}];

完美的我自己确实设法弄明白了,但你的回答很准确,我把靴子移到了所有东西下面,显然我需要归还一些东西!我对这些前端框架很陌生。为援助干杯: