【发布时间】:2014-03-28 10:53:10
【问题描述】:
我只是想让这个工作:
.....
.when('/channel/:id/:slug',{
templateUrl:'views/channel/index.html',
controller:'Channel',
publicAccess:true,
sessionAccess:true
})
.....
app.controller('Channel', ['$scope','$routeParams', function ($scope,$routeParams) {
}]);
app.run(function($rootScope, $location, $route) {
var routesOpenToSession = [];
angular.forEach($route.routes, function(route, path) {
console.log(path);
console.log(route);
route.sessionAccess && (routesOpenToSession.push(path));
});
$rootScope.$on('$routeChangeStart', function(event, nextLoc, currentLoc) {
var closedToSession = (-1 === routesOpenToSession.indexOf($location.path()));
if(closedToSession && $rootScope.session.id_user) {
$location.path('/');
}
});
});
如果$rootScope.session.id_user 存在且sessionAccess:true,为什么我也无法通过site.com/channel/9/my-slug 访问该页面?
我被重定向到 / ,而任何其他静态 url 都可以使用 sessionAccess:true 例如 channel/staticparam 可以,但使用动态参数它将无法工作
这是控制台日志结果:
【问题讨论】:
-
'channel' != 'channels'
-
网址中有错字。第一眼
-
对不起,一个错字,我还添加了重定向的主要原因!
-
没有考虑很多BL逻辑,你有没有同样的问题,什么时候尝试打开一个路由?你在使用 html5mode,它会忽略 url 中的哈希 #?
-
我开始相信 closedToSession 始终为真,+ session id 对象为真。 plnkr.co/edit/B4glcHZwht48wezJ5NiE?p=preview 我创建了一个示例。也许它会帮助你理解这个问题
标签: javascript angularjs dynamic url-routing url-parameters