【发布时间】:2014-02-03 06:46:03
【问题描述】:
我在我的 angularjs 应用程序中使用 Restangular 并使用 setErrorInterceptor 在一处处理响应错误。如果发生错误,我想将用户重定向到登录页面。我知道只有providers & constants 在配置阶段是可注入的。
var app = angular.module('ourstandApp', ['ngRoute', 'restangular', 'ui.bootstrap', 'ngCookies', 'angularFileUpload']);
// Global configuration
app.config(function (RestangularProvider, baseRequestConfig, $routeProvider, urlsProvider) {
var getBaseRequestUrl = function () {
return baseRequestConfig.protocol + "://" + baseRequestConfig.hostName + ":" + baseRequestConfig.portNumber + baseRequestConfig.resourcePath;
}
var initializeRoute = function () {
$routeProvider.when('/', {
controller: LoginController,
templateUrl: 'views/login.html'
}).
otherwise({
redirectTo: '/'
});
}
initializeRoute();
RestangularProvider.setBaseUrl(getBaseRequestUrl());
RestangularProvider.setErrorInterceptor(function (resp) {
goToLogin(); // i want to change url to login page
return false;
});
});
【问题讨论】:
-
您期待什么样的错误? 404、500、找不到资源?这些有 ng 路由事件。 docs.angularjs.org/api/ngRoute.$route 如
$routeChangeError。然后通常我可以访问 $location 并使用$location.path('YOUR PATH'); -
所有 4xx 和 5xx 错误。 @Matthew.Lothian 我想在一个地方处理错误,restangular 为我提供了此功能,但问题在于更改 .config() 方法中的路径
-
我对 Restangular 不熟悉,但一般来说,我可能不是要走的路。我将举例说明我之前是如何设置的。
标签: angularjs restangular angular-routing