【发布时间】:2016-10-14 20:21:50
【问题描述】:
我正在运行一个带有解析的 ui-router,解析后的数据如下所示:
myService: "myService"
items: function(myService){
var promise = myService.resource.query().$promise;
return promise;
}
但是,如果这个 promise 失败,整个状态将被中止并抛出 $stateChangeError。我不想中止整个状态,只需将项目的值设置为默认值并继续进入状态。我能找到的唯一解决方案似乎是 hack:
myService: "myService",
items: ['myService', '$q', function(myService, $q) {
//return []
defObj = $q.defer();
var promise = myService.resource.query().$promise;
promise.then(function(data) {
defObj.resolve(data);
},function(error) {
defObj.resolve([{title: "sorry, could not load"}]);
})
return defObj.promise;
}]
这样,无论请求是否失败,promise 都将解析并且状态将继续。这个问题有更简单的解决方案吗?
如果重要的话,我会在解析中使用它,因为信息会影响页面的流程,我不希望它在加载数据之前加载页面
【问题讨论】:
标签: angularjs angular-ui-router angular-resource