AngularJS:在第一个查询返回成功(不是401响应)之前不要加载视图
AngularJS: do not load view until first query return success (not 401 response)
在我的应用程序(生成与约曼)我有这样的结构:
视图:
index.html
和ng-view
用于渲染控制器视图
控制器:
每个控制器尝试使用API urlm获取一些数据,如:
$scope.getArticles = function() {
$http.get(settings.apiBaseUri + '/app/articles/', {
headers: {
'Content-Type': 'application/json',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'If-Modified-Since': ''
}
})
.success(function(response) {
/* do some magic here :) */
});
};
$scope.getArticles();
,因此在每个控制器(+许多其他查询)
,现在我有点困惑:如何不渲染任何东西,直到我的第一个请求得到200而不是401?
这是我的拦截器:
var deleteAuth = function(){
$location.path('/signin');
delete $localStorage.authStatus;
};
var responseError = function(rejection) {
...
if (rejection.status === 401 || rejection.status === 403) {
authStatus = $localStorage.authStatus;
if (authStatus && authStatus.isAuth && authStatus.authToken && !ipCookie('authToken') && !renewTokenAttempt) {
deleteAuth();
}
}
...
return $q.reject(rejection);
};
和所有的工作几乎'必须',但是…
每次,我得到我的index.html加载(与侧边栏,徽标等),只有那时我试图得到(例如)我的文章,然后,如果我得到401我重定向到auth-page
,这不是那么好:因为我看到小闪烁与所有的风格,只有然后登录页面。
是真实的,首先检查,如果我得到200,然后只渲染页面与侧栏等,如果不是:然后auth-page.
怎么做?
我在web上看到了一些解决方案,但他们都是巨大的,我需要一些真正快速和简单的)
好的,我猜你试着建立一个SPA,你有路由在你的应用程序。你可以使用resolve
之前,你渲染的东西。看看这里http://www.johnpapa.net/route-resolve-and-controller-activate-in-angularjs/
您将得到如下内容:
'use strict';
var yeomanTestApp = angular.module('yeomanTestApp', [])
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl',
resolve : {
// add your code here to see it the user has rights or not
}
})
.otherwise({
redirectTo: '/'
});
}]);
如果这些依赖项中的任何一个是承诺,它们将在控制器实例化和触发$ statechangessuccess事件之前被解析并转换为一个值。
resolve属性是一个映射对象。map对象包含以下键/值对:
key - {string}:要注入到控制器中的依赖项的名称。Factory - {string|function}:如果是字符串,那么它就是服务的别名。否则,如果函数,则注入该函数,并将返回值视为依赖项。如果结果是promise,则在实例化控制器并将其值注入控制器之前解析它。
- Ember视图未响应用户启动的事件
- 仅在响应视图中激发jQuery函数
- 安卓网络视图中的无响应触摸
- Cordova嵌入式网络视图未响应navigator.camera未定义
- Ajax 不会返回对应用程序中的视图页面的响应
- 快速 - 路由中间件 如何确定响应视图是否已呈现
- 侦听嵌入在 GWT 视图中的 HTML 表单上的响应
- .Net 响应式网格视图
- 在 ajax 响应后在出口中呈现视图
- AngularJS:如何在视图上方打开模态作为对哈希更改的响应(ngView /$routeProvider)
- 无法使用JSON响应通过JQuery Mobile生成动态列表视图
- Reactjs:基于响应加载视图
- 一个“;监听路由器”;(响应视图/模型中的路由器事件)
- 使用Cheerio和Response for Node web scraper,将响应函数结果传递给视图
- bootstrap-date_picker结合响应的html5类型日期用于iphone视图
- 如何在基于Django类的视图中通过mime类型区分响应
- AngularJS视图没有't在将$http响应分配给$scope时进行更新
- Ajax响应并没有改变我的视图模型
- 如何在更新角度视图之前操作从JSON响应派生的对象
- Html机身在移动和平板电脑响应视图中从右侧进行了一些填充