das*_*boe 7 angularjs angularjs-routing
怎么可能URL从路由参数中获取哈希片段$routeChangeStart.
$scope.$on('$routeChangeStart', function (event, next, current) {
// trying to get the url hash fragment from <next> param here
// e.g. to_url_function(next) -> '/my_path/1'
});
Run Code Online (Sandbox Code Playgroud)
接收URL hash片段很容易使用,$locationChangeStart但这对我来说不是一个选择.
小智 6
dasboe:我想我正在回答你的问题.
我在$ routeChangeStart事件处理程序中有一个带有身份验证/授权检查的应用程序.如果未经过身份验证,我会向用户提供模态登录页面.我想要一个成功的登录将它们发送到它们的原始目的地($ routeChangeStart的美丽是它将再次运行并在成功登录后检查授权).我在注入模态登录控制器的用户会话服务中保存了从下一个构建的路径.
这是事件处理程序
//before each route change, check if the user is logged in
//and authorized to move onto the next route
$rootScope.$on('$routeChangeStart', function (event, next, prev) {
if (next !== undefined) {
if ('data' in next) {
if ('authorizedRoles' in next.data) {
var authorizedRoles = next.data.authorizedRoles;
if (!SessionService.isAuthorized(authorizedRoles)) {
event.preventDefault();
SessionService.setRedirectOnLogin(BuildPathFromRoute(next));
if (SessionService.isLoggedIn()) {
// user is not allowed
$rootScope.$broadcast(AUTH_EVENTS.notAuthorized);
} else {
// user is not logged in
$rootScope.$broadcast(AUTH_EVENTS.notAuthenticated);
}
}
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是从下一个对象构建路径的函数
function BuildPathFromRoute(routeObj)
{
var path = routeObj.$$route.originalPath;
for (var property in routeObj.pathParams)
{
if (routeObj.pathParams.hasOwnProperty(property))
{
var regEx = new RegExp(":" + property, "gi");
path = path.replace(regEx, routeObj.pathParams[property].toString());
}
}
return path;
}
Run Code Online (Sandbox Code Playgroud)
笔记:
| 归档时间: |
|
| 查看次数: |
22992 次 |
| 最近记录: |