我已经解决了我的路由提供程序,但我只是返回了承诺,所以我不知道它是成功还是失败。这就是我所拥有的
.when('/items', {
templateUrl: 'views/items.html',
controller: 'ItemsCtrl',
resolve: {
resolvedData: function(Restangular) {
return Restangular.one('Items').get();
}
}
})
现在这确实有效,但我如何检测成功或失败。我可以在 resolve 方法中输入这个,但是在成功和失败中我会返回什么。记住我需要将项目注入我的控制器中。
.when('/items', {
templateUrl: 'views/items.html',
controller: 'ItemsCtrl',
resolve: {
resolvedData: function(Restangular) {
Restangular.one('Items').get().then(function(data) {
// success
}, function() {
// failure
});
}
}
})
我确实在这里看到了一个例子,但我很困惑这是否是我需要的以及如何使用它?
AngularJS - 用 $routeProvider:resolve 拒绝了 $http 承诺
它似乎正在返回手动承诺。
resolve: {
response: ['Warranty'
'$q',
function(Warranty, $q) {
var dfd = $q.defer();
Warranty.sendRequest().then(function(result) {
dfd.resolve({
success: true,
result: result
});
}, function(error) {
dfd.resolve({
success: false,
reason: error
});
});
return dfd.promise;
}
]
}
我真正想做的是在我的控制器中将已解析的变量注入控制器,如果它失败了,那么我也想访问控制器中的故障,这样我就可以向用户显示它是不可能的由于问题而渲染。