AngularJS $ stateProvider问题

时间:2019-09-09 11:16:28

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

我的页面有这两种状态:

$stateProvider
    .state("page", {
        url: "/:pageId/:pageType",
        template: pageTemplate,
        controller: "contentCtrl",
        resolve: {
            ...
            }
        },
        params: {reload: true}
    })

.state("schedule", {
        url: "/Schedule/:scheduleId/:pageId/:pageType",
        template: pageTemplate,
        controller: "contentCtrl",
        resolve: {
            ...
            }
        },
        params: {
            pageId: { squash: true, value: null},
            pageType: { squash: true, value: null},
            reload:true
        }
    })

有时,链接如下:

http://localhost:8182/index.html#/Schedule/691d6981b8dd47e0a158d67cb02b1fee/

正在加载“页面”状态,而不是“计划”状态。

该如何解决?

PS:我正在使用AngularJS v1.7.6和ui-router v0.2.18

1 个答案:

答案 0 :(得分:1)

按照定义的顺序匹配路由。但是,精确匹配优先于参数化匹配。

我首先会尝试更改状态的顺序。

然后我会尝试做

$stateProvider.state('foo.bar', {url: '/foo/:bar'});
$stateProvider.state('foo.baz', {url: '/foo/baz'});
$urlRouterProvider.when( '/foo/baz', function($state){ $state.go('foo.baz'); } );

我也看到两个问题:

  1. / Schedule /
  2. 中的大写字母是什么
  3. 带参数的是什么:{reload:true}“