UI-Router $ state.includes()不为子状态返回true

时间:2017-03-20 18:26:08

标签: javascript angularjs angular-ui-router

我有以下状态(所有州的小片段):

   .state('reports', {
        abstract: true,
        url: '/reports',
        template: '<ui-view/>'
    })

    .state('reports.program', {
        abstract: true,
        url: '/program',
        template: '<ui-view/>'
    })

    .state('reports.form', {
        abstract: true,
        url: '/form',
        template: '<ui-view/>'
    })

    .state('reports.program.overview',{
        url: '/overview?start&end',
        data: {...},
        breadcrumb: {...},
        params: {...},             
        templateUrl: 'app/reports/program/overview.html',
        controller: 'reportingProgramOverviewController',
        controllerAs: 'vm',
        resolve: {...}  
    })

当我在reports.program.overview并使用$state.includes('reports');时,它会返回false。 'reports.*'也是如此。

据我了解,$state.includes()也会匹配儿童状态?因此,如果我在state1.state2.state3之下,它将分别匹配这三个中的任何一个,我通过该方法检查它们。

如何查看我目前是否处于reports状态?

1 个答案:

答案 0 :(得分:0)

不支持:查看244 alebo 1229

根据评论,您可以执行以下操作:

$state.matches = function(stateName) {
    var regexp = new RegExp('^'+stateName.replace(".", "\.").replace('*', '[\w]+'))
    return regexp.test($state.current.name);
}