感谢您阅读此问题。 我正在制作AngularJS应用程序。 我创建了一个状态并定义了调用用户服务中定义的User.getProfile的解析。 因此,当服务成功获取配置文件但在失败时无法正常工作时,此解析正在运行。 让我发一个代码。
.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时没有解决。 如果我在承诺电话中遇到问题,请纠正我。
谢谢!
答案 0 :(得分:2)
如果解析功能失败,您可能希望相应地向用户显示某些内容(如错误消息)。让你的resolve函数返回一个promise(没有那个)并使用内部事件$ routeChangeError会更好。
myApp.run(['$rootScope',function($rootScope) {
$rootScope.$on('$routeChangeError', function() {
// what you want to do if an error occurs
// ex: $rootScope.displayErrorMessage = true
});
}]);