动态可选ui.router $ stateParams?

时间:2015-10-15 22:34:37

标签: angularjs angular-ui-router

是否可以使用动态ui.router $stateParams参数?如果用户提供路线上的参数,我只想通过名称或顺序位置来解决它们。但是,我不想在每个州都定义它们。

像这样......

.state('selector', {
    url: '/select/:brandId/:userId/:appId/:appVerId/:featureId/:dialogId/:controlId/:token',
    template: null,
    controller: 'Selector',
    params: {
        brandId     : { squash: true, value: null },
        userId      : { squash: true, value: null },
        appId       : { squash: true, value: null },
        appVerId    : { squash: true, value: null },
        featureId   : { squash: true, value: null },
        dialogId    : { squash: true, value: null },
        controlId   : { squash: true, value: null },
        token       : { squash: true, value: null }
    }
})

......或者......

.state('selector', {
    url: '/select/:a/:b/:c/:d/:e/:f/:g/:h',
    template: null,
    controller: 'Selector',
    params: {
        a : { squash: true, value: null },
        b : { squash: true, value: null },
        c : { squash: true, value: null },
        d : { squash: true, value: null },
        e : { squash: true, value: null },
        f : { squash: true, value: null },
        g : { squash: true, value: null },
        h : { squash: true, value: null }
    }
})

我想通过名字或序数位置访问它们......

var a = $stateParams.a; // or
var b = $stateParams[1];

这将允许以下网址有效:

http://adsf.com/selector  
http://adsf.com/selector/////217H3  
http://adsf.com/selector/23AD/12D///217H3

1 个答案:

答案 0 :(得分:1)

在你提出这个问题之前,我已经在另一个五个月的帖子中回复了

Angular UI-Router more Optional Parameters in one State

简短回答....

.state('login', {
    url: '/login/:a/:b/:c/:d',
    templateUrl: 'views/login.html',
    controller: 'LoginCtrl',
    params: {
        a: { squash: true, value: null },
        b: { squash: true, value: null },
        c: { squash: true, value: null },
        d: { squash: true, value: null },
    }
})