定义各个路由的自定义行为
为各个路由定义自定义行为的最简单方式相当容易。
在此示例中,我们使用它来验证用户:
1)routes.js
:为任何所需的路线创建一个新属性(如 requireAuth
)
angular.module('yourApp').config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/home', {
templateUrl: 'templates/home.html',
requireAuth: true
})
.when('/login', {
templateUrl: 'templates/login.html',
})
.otherwise({
redirectTo: '/home'
});
}])
2)在未绑定到 ng-view
内部元素的顶层控制器中(为避免与角度 $routeProvider
发生冲突),检查 newUrl
是否具有 requireAuth
属性并采取相应措施
angular.module('YourApp').controller('YourController', ['$scope', 'session', '$location',
function($scope, session, $location) {
$scope.$on('$routeChangeStart', function(angularEvent, newUrl) {
if (newUrl.requireAuth && !session.user) {
// User isn’t authenticated
$location.path("/login");
}
});
}
]);