Angularjs 将角度服务注入控制器会导致$injector:unpr错误(使用AngularBooter)
在我的应用程序中,我正在使用for Angular 这是我的密码: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
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;
}
};
}];
完美的我自己确实设法弄明白了,但你的回答很准确,我把靴子移到了所有东西下面,显然我需要归还一些东西!我对这些前端框架很陌生。为援助干杯: