'/' 是不让状态传递给 '/ {用户名:[A-ZA-Z0-9] {3,20

2019-10-20 20:05发布

我有一个名为“现场”空网址即“一个抽象根状态”,其中有两个子状态的个人资料'和“家”,其中用于家庭的网址为“/”和配置文件中的URL为“/ {用户名: A-ZA-Z0-9] {3,20}}”序来测试我试过很多次去的国企,但它一直练到家的状态。

但是,当我改变home state有发言权的URL '/home'那么我就能去profile state 。 在网上搜索后,我找不到这个问题。 它是一个错误吗? 或者说我做错了什么?

下面是代码$stateProvider

     $stateProvider.
        state('site', {
            url: '',
            abstract: true,
            views: {
                '': {
                    templateUrl: 'views/site.html' //this is the base template
                },
                'navbar@site': {
                    templateUrl:'views/navbar.html'
                }
            },
            data:{
                access: access.public
            }
        }).
        state('site.home', {
            url: '/',
            templateProvider :['$rootScope','$http','$state',function($rootScope,$http,$state){
                //console.log($state);
                var template = 'views/main_new.html';
                if($rootScope.User.isLoggedIn()){
                    template = 'views/new_room_me.html'
                }
                return $http.get(template).then(function (resp) {
                    return resp.data;
                });
            }]
        }).
        state('site.profile',{
            url:'/{username:[a-z0-9A-Z]{3,20},strict:true}',
            templateUrl:'views/new_room_friend.html'
        });


       $urlRouterProvider.otherwise('/ankit');

Answer 1:

有正常工作的例子 ,在这里我主要是切换状态声明的顺序:

.state('site.profile',{
        url:'/{username:[a-z0-9A-Z]{3,20}}',
        ...
    })
.state('site.home', {
        url: '/',
        ...
    })

其原因是, ui-router URL引擎并遍历为了他们被宣布为国家,并试图找到一个URL匹配。 这样一来,我们就得到了工作定义。

不过,我建议:

使用一些关键字来区分URL,例如url:'/profile/{username:[a-z0-9A-Z]{3,20}}',

这不仅将有助于引擎找到的网址正确的状态,但即使从URL的用户/读者的视角 - 这在我看来更明确,自我描述。

总之, 开关状态 DEF应该在这里解决这个问题...



文章来源: '/' is not letting the state to pass to '/{username:[a-zA-Z0-9]{3,20}}' in AngularJs UI-router