ngRoute:不同长度的导航路线

时间:2015-07-08 15:20:46

标签: angularjs navigation angularjs-routing

我正在开发一个菜单密集的网站。它提供了两个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'
    })
}]);

1 个答案:

答案 0 :(得分:0)

我在这里找到答案:AngularJS dynamic routing

基本上在*之后添加/:action可启用动态路由。