我用ui-router它来创建应用程序中的路由结构。我注意到,当我向状态添加 resolve 时,我无法再访问该地址。控制台中未显示任何错误。路由结构看起来像这样:
setRoutes.$inject = ['$stateProvider'];
function setRoutes($stateProvider) {
$stateProvider
....other states
.state('content.dashboard.my.detail', {
url: '/:objectId/detail',
templateUrl: 'path/to/detail/template.html',
controller: 'detailController as vm',
resolve: {
object: objectResolver
}
})
objectResolver.inject = ['$stateParams', 'someObjectService', 'progress']
function objectResolver($stateParams, someObjectService, progress) {
var promise = someObjectService.fetch(objId)
progress.showSpiner(promise);
return promise;
}
上面的 objectResolver 函数中使用了一个自定义服务。
(function() {
'use strict';
angular
.module('some.module')
.factory('progressService', progressService);
var DEFAULT_MESSAGE = 'Loading...';
progressService.$inject = ['service3'];
function progressService(service3) {
var displayedSpinnersCount = 0;
return {
showSpiner: showSpiner
};
.......... other code
}
注入函数以获取对象的服务名称有误。在 objectResolver 函数中,我指定了progress dependency ,但实际上该服务称为progressService。
问题在于,如果您不小心在 resolve 中使用的函数中指定了一个不存在的依赖项(您将它拼错了一个字母),那么将不会发生到该状态的转换。也不会向控制台输出任何内容。问题是什么以及在哪里寻找它不是很清楚..
附言 希望我能节省别人的时间。