我正在开发一个菜单密集的网站。它提供了两个json对象之间的菜单系统。第一个是控制导航的总体菜单系统,第二个是控制当前页面的菜单项动作。
我的问题是,有人会如何编写路由配置来处理基于变量深度uri的路径?
此函数验证来自给定菜单系统的路径顺序数组。
function actionDrill(namelist, level, currentNode) {
var i,
curr,
result;
if(level == namelist.length - 1 && namelist[level] === currentNode.name) {
return true
}
else if(currentNode.hasownProperty('submenus')) {
result = false;
for(i = 0; i < currentNode.submenus.length; i++) {
curr = currentNode.submenus[i];
if(namelist[level+1] === curr.name)
{
result = actionDrill(namelist, level+1, curr)
}
if(result) {
break;
}
}
return result
}
return false
}
这是我的配置。我如何编辑'/:action'
来处理uri的深度不是1?
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/home', {
templateUrl: 'partials/home.html',
controller: 'MenuCtrl'
})
.when('/:action', {
templateUrl: 'partials/action.html',
controller: 'ActionCtrl',
resolve: {
action: function($q, $route) {
var deferred = $q.defer(),
action = $route.current.params.action;
if(actionDrill(action, 0, menuitems)) {
deferred.resolve(action);
} else {
deferred.reject('Invalid Action');
}
return deferred.promise;
}
}
})
.otherwise({
redirectTo: '/home'
})
}]);