【问题标题】:Angularjs $stateProvider issueAngularjs $stateProvider 问题
【发布时间】:2019-09-09 19:26:26
【问题描述】:

我的页面有这两种状态:

$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

【问题讨论】:

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


    【解决方案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. 参数是什么:{reload: true}"

    【讨论】:

    • 这只是一个可能出错的地方。 (我不会这样做)
    • 我已经尝试过你的建议,结果是一样的
    • 尝试看看移除“页面”状态后会发生什么
    • 那不是状态问题
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2018-04-25
    • 2016-01-02
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多