Javascript 当服务失败时,如何解析状态
谢谢你阅读这个问题。 我正在制作AngularJS应用程序。 我创建了一个状态并定义了调用User.getProfile的解析,它是在用户服务中定义的。 所以,当服务成功获取配置文件时,此解决方案起作用,但当服务失败时,此解决方案不起作用。 让我发个密码Javascript 当服务失败时,如何解析状态,javascript,angularjs,promise,Javascript,Angularjs,Promise,谢谢你阅读这个问题。 我正在制作AngularJS应用程序。 我创建了一个状态并定义了调用User.getProfile的解析,它是在用户服务中定义的。 所以,当服务成功获取配置文件时,此解决方案起作用,但当服务失败时,此解决方案不起作用。 让我发个密码 .state('app.profile', { url: '/profile', views: { 'menuContent': { templat
.state('app.profile', {
url: '/profile',
views: {
'menuContent': {
templateUrl: 'views/pages/profile.html',
controller: 'ProfileCtrl',
}
},
resolve: {
data: function(User) {
return User.getProfile();
}
}
})
这是我定义的服务
service.getProfile = function() {
var deferred = $q.defer();
HttpReq.sendRequest( RESTAPI.DEV_URL + RESTAPI.PROFILE,
'GET',
undefined,
function(result) {
/*
*/
if (result.success) {
deferred.resolve(result);
}
else {
deferred.reject(result);
}
},
function(error, response) {
deferred.reject(error);
//uiHelper.alert($scope, 'Login Error', response.message);
});
return deferred.promise;
};
在服务中调用defer.resolve时解析app.profile。
但在调用defer.reject时未解决。
如果我打电话有问题,请纠正我
谢谢 如果解析功能失败,您可能希望向用户显示相应的内容(如错误消息)。最好让resolve函数返回一个承诺(没有承诺),并使用内部事件$routeChangeError
myApp.run(['$rootScope',function($rootScope) {
$rootScope.$on('$routeChangeError', function() {
// what you want to do if an error occurs
// ex: $rootScope.displayErrorMessage = true
});
}]);
如果resolve函数失败,您可能希望向用户显示相应的内容(如错误消息)。最好让resolve函数返回一个承诺(没有承诺),并使用内部事件$routeChangeError
myApp.run(['$rootScope',function($rootScope) {
$rootScope.$on('$routeChangeError', function() {
// what you want to do if an error occurs
// ex: $rootScope.displayErrorMessage = true
});
}]);
我没有得到它,实际上您可以通过添加
then
语法User.getProfile().then(successCallback,errorCallback)来检索状态代码>因为实际上您正在返回一个承诺,我不知道您将如何使用它。这不是我想要的。这不是真正的clar您想要的。解析后,解析将向概要文件控制器抛出数据对象。在定义状态时使用回调是毫无意义的。我想要的是为服务中的每个案例将数据对象抛出到概要文件控制器。对于defer.resolve和defer.reject.now,只有在调用defer.resolve后才会传递数据对象。我可以将其传递给defer.reject吗?我没有得到它,实际上您可以通过添加then
syntaxUser.getProfile().then(successCallback,errorCallback)来检索状态代码>因为实际上您正在返回一个承诺,我不知道您将如何使用它。这不是我想要的。这不是真正的clar您想要的。解析后,解析将向概要文件控制器抛出数据对象。在定义状态时使用回调是毫无意义的。我想要的是为服务中的每个案例将数据对象抛出到概要文件控制器。对于defer.resolve和defer.reject.now,只有在调用defer.resolve后才会传递数据对象。我可以让它通过延迟。拒绝也被称为?很好的观点!但是,有没有一种方法可以改变这种状态,而不考虑决心?这一点很好!但是,有没有一种方法可以改变这种状态而不考虑决心?