UI-Router $ stateParams在初始“无效”路由页面加载时为空

时间:2015-02-19 06:43:38

标签: angularjs angular-ui-router

我的appConfig中有以下代码重定向/转换逻辑,用于重新指向无效路由:

$urlRouterProvider.when('/:lang/profile/:keywords/:id', ['$state', '$stateParams', function ($state, $stateParams) {
            $state.transitionTo('root.public-profile.summary', $stateParams, {
            reload: true,
            inherit: false,
            notify: true
        });

将摘要路由定义为:

state('root.public-profile.summary', {
                    url: "/summary",
                    templateUrl: "/templates/public.profile.summary.tpl.html"
            })

因此,当用户尝试访问' /:lang / profile /:keywords /:id'它应该将它们重定向/重新指向/:lang / profile /:keywords /:id / summary。如果用户尝试删除“摘要”,则以前加载视图时此方法可以正常工作。来自Url的部分,它会按预期自动重新附加。但是,如果用户复制并粘贴错误的'直接在新的浏览器窗口中链接,$ stateParams对象为空,因此无法进行转换。

这种行为是否有设计,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

你是对的,

这种行为是设计使然。你应该以状态图的形式看到所有内容,过渡是否会发生取决于什么状态被激活。我从你的代码片段中看到的是,你在这里工作ui-router,其中状态比实际网址更重要。 不确定您要实现的目标,但这些文档对您有所帮助。 https://github.com/angular-ui/ui-router/wiki

如果您对此答案有信心,请回复任何其他问题或投票。