ng-route 模块中的 when() 和 ui-route 的 state() 都提供了resolve属性
简介
为什么使用resolve:
当路由切换的时候,被路由的页面中的元素(标签)就会立马显示出来,同时,数据会被准备好并呈现出来。但是注意,数据和元素并不是同步的,在没有任何设置的情况下,AngularJS默认先呈现出元素,而后再呈现出数据。这样就会导致页面会被渲染两遍,导致“页面UI抖动”的问题,对用户不太友好。resolve的出现解决了这个问题。resolve是干嘛用的:
resolve属性里的值会在路由成功前被预先设定好,然后注入到控制器中。通俗地将,就是等数据都“就位”后,才进行路由(其实我觉得也不能叫路由,因为路由是一些列的操作,其中就包括了设置resolve属性等等)。这样的好处就是页面仅会被渲染一遍。
这样,我们就可以通过这种方式来动态加载相应的文件,减轻首页加载的负担。简单用法:
var app = angular.module('myApp', ['ui.router']);
app.config(["$stateProvider", function($stateProvider) {
$stateProvider
.state("index", {
url: '/',
templateUrl: 'list.html',
controller: 'myController',
resolve: {
user: function() {
return {
name: "perter",
email: "826415551@qq.com",
age: "18"
}
}
}
})
}]);
app.controller('myController', function($scope, user) {
$scope.name = user.name;
$scope.age = user.age;
$scope.email = user.email;
$scope.user = user;
});
参考:http://blog.csdn.net/javaweiming/article/details/53944944