定義各個路由的自定義行為
為各個路由定義自定義行為的最簡單方式相當容易。
在此示例中,我們使用它來驗證使用者:
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");
}
});
}
]);