可以说我设置了一个有角度的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;
         });
     }
 }

09-25 15:56