可以说我设置了一个有角度的ui路由器路由。当我更改为该状态时,我要告诉Angular我要它首先解决工厂调用,然后再加载视图。但是,当该api调用为空时会发生什么?我想通知用户未找到任何结果,并保持我的原始状态。无法过渡到没有数据要显示的另一个视图。实现此目标的最佳方法是什么?
路线(到目前为止,我知道会有回报,该路线可以按预期运行)
'use strict';
angular.module('testApp')
.config(function ($stateProvider) {
$stateProvider
.state('spinnerTest', {
url: '/spinner_test',
templateUrl: 'app/spinnerTest/spinnerTest.html',
controller: 'SpinnerTestCtrl',
resolve: {
names: function(NamesService){
//What happens if I return an empty array []?
//How do I return to the previous state?
NamesService.getNames();
}
}
});
});
最佳答案
您可以在数组为空的情况下简单地拒绝promise来解决:
resolve: {
names: function(NamesService) {
return NamesService.getNames().then(function(names) {
return names.length == 0 ? $q.reject('no names') : names;
});
}
}