如何在$ stateProvider中移动以检查值并移动到另一个状态?

时间:2015-12-08 18:35:21

标签: angularjs angular-ui-router angular-ui

我正在开发我的AngularUI项目。我需要在加载状态之前实现一些逻辑,并在结果上配置以移动到另一个状态的另一个模块或在当前模块中加载状态。

这是模块定义:

angular.module("workPlan", ['damageEvent',
                            'ui.router',
                            'geomindCommon',
                            'templates',
                            'lookups',
                            'ngTouch',
                            'ui.grid',
                            'ui.grid.expandable',
                            'ui.grid.selection',
                            'ui.grid.pinning',
                            'ui.grid.resizeColumns',
                            'ui.bootstrap'
])

.config([
    "$stateProvider",
    "$urlRouterProvider",
    function ($stateProvider, $urlRouterProvider) {

        $urlRouterProvider.otherwise("/MainPage");
        $stateProvider
            .state("workPlan", {
                abstract: true,
                url: "/",
                template: "<ui-view></ui-view>"
            })

         .state("workPlan.list", {
             url: "MainPage?myParam",
             templateUrl: "app/workPlan/templates/workPlanList.tmpl.html",
             controller: "workPlanListController",
             controllerAs: "list",
             resolve:{

                 filterParameters: [filterParametersResolver],
                 workPlans: ["workPlanServise", workPlanServiseResolver]
             }
         })
    }
]);

如果某个网址myParam的值为true,我需要使用此服务:

$state.go("list.clients");

加载list.clients状态。

如果来自网址的myParam值为false,我需要加载当前状态(workPlan.list)。

但我不知道是要实施逻辑来检查myParam值并移动或保持适当状态。

我认为在解决状态时实施是错误的。

所以我的问题是在哪里实现上述逻辑?

1 个答案:

答案 0 :(得分:0)

定义url路径而不是查询参数以确定要加载的状态。

因此,您可以为'workPlan.list'状态定义url,如MainPage / work-plan 'list.clients'状态的主页/客户。