我按以下方式设置主模块的配置:
angular.module('main').config(function($routeProvider, $locationProvider, ConfigProvider)
{
$routeProvider
.when('/home',
{
templateUrl : ConfigProvider.path.views + '/page/home.html',
controller : 'PageHomeCtrl',
resolve : {
resolveHomeData : function(ResolveService) { return ResolveService.resolveHome() }
}
});
$locationProvider.html5Mode(true);
}
);
ResolveService
负责解决路线问题,目前非常简单:
angular.module('app.resolve').factory('ResolveService', function($q, UserService)
{
return {
resolveHome : function()
{
var deferred = $q.defer();
UserService.find('me', function(data)
{
deferred.resolve(data);
}, function(data, status)
{
deferred.reject(data);
});
return deferred.promise;
}
}
});
而不是PageHomeCtrl
:
angular.module('app.ui.page.home').controller('PageHomeCtrl', function($q, $scope, UserService, resolveHomeData)
{
});
正如您所见,我在其中注入resolveHomeData
但是我从AngularJS收到以下错误:
Unknown provider: resolveHomeDataProvider
为什么resolveHomeData
未正确注入我的控制器?
我使用Gulp脚本连接所有内容,并按以下顺序包含所有AngularJS文件:
编辑:
这是main
模块定义:
angular.module('main',
[
'ngRoute',
'app.config',
'app.resolve',
'app.ui.page.index',
'app.ui.page.home',
'app.ui.modal.login'
]
)
答案 0 :(得分:1)
编辑:由于您的评论,我之前删除了我的答案。
AngularJS认为您的resolveHomeData
是提供者/服务而非解析数据。发生这种情况是因为控制器也是偶然在HTML中定义的,因此具有两倍的控制器声明:一次在HTML中,一次在配置中。
删除HTML,它应该可以工作。