Angular-ui-router state.transitionTo路由到空:id(/ users //)

时间:2013-11-27 09:43:26

标签: angularjs angular-ui-router

它应该路由到/users/me/而不是路由到/users// 如果我手动编写/users/me/网址或使用链接移动到那里,一切正常。但是过渡到没有做我期望的事情,我无法弄明白为什么。

在我的代码中,我有:

$state.transitionTo('users.me');

在我的路线(州)配置中我有:

state('users', {
            abstract:true,

            templateUrl: '/path/to/template.html',

            access: { isPrivate: 0 },
            resolve: {
           ...a resolve block..



    }).state('users.me',{
            url: '/users/:id/',
            controller: 'userCtrl',
            access: { isPrivate: 0 },
            views:{
                'userView':{
                    templateUrl:'/path/to/template.html'',
                    controller:'userCtrl',

                },
                'view1':{
                    templateUrl:'/path/to/template.html'',
                    controller:'anotherCtrl',

                },
                'view2':{
                    templateUrl:'/path/to/template.html'',
                    controller:'anotherCtrl',

                },
                'view3':{
                    templateUrl:'/path/to/template.html'',
                    controller:'anotherCtrl',

                },
                'view4':{
                    templateUrl:'/path/to/template.html',
                    controller:'anotherCtrl'
                }
            }

我很乐意为你提供帮助

2 个答案:

答案 0 :(得分:19)

确保您提供身份证明。

$state.transitionTo('users.me', {'id': 'me'});

这应该可以使它工作,但你应该使用go()方法作为transitionTo是一个低级函数,因为0.2.0。

$state.go('users.me', {'id': 'me'});

请务必阅读the method's documentation

答案 1 :(得分:0)

在您的情况下,您应该使用$state.go('users.me', {'id': 1});

$ state.go(to [,toParams] [,options])

返回表示转换状态的Promise。

转换到新状态的便捷方法。 $ state.go在内部调用$ state.transitionTo但自动将选项设置为{location:true,inherit:true,relative:$ state。$ current,notify:true}。这允许您轻松使用绝对路径或相对路径,并仅指定您要更新的参数(同时让未指定的参数从当前状态继承)。

$ state.transitionTo(to,toParams [,options])

返回表示转换状态的Promise。

转换到新状态的低级方法。 $ state.go()在内部使用transitionTo。在大多数情况下,建议使用$ state.go()。