Angularjs 如何允许静态url路由存在于动态url命名空间上

Angularjs 如何允许静态url路由存在于动态url命名空间上,angularjs,angular-ui,angular-ui-router,Angularjs,Angular Ui,Angular Ui Router,所以我在angular ui路由器中有两条路由,一条是静态路由,一条是动态路由 $stateProvider .state('home', { url: '/home', templateUrl: 'home.html' }) .state('profile', { url: '/:username', templateUrl: 'profile.html' }) ; 我

所以我在angular ui路由器中有两条路由,一条是静态路由,一条是动态路由

$stateProvider
      .state('home', {
        url: '/home',
        templateUrl: 'home.html'
      })
      .state('profile', {
        url: '/:username',
        templateUrl: 'profile.html'
      })
      ;
我如何确保一个不会与另一个冲突

====

编辑:

现在我发现“profile”与root冲突:

.state('root', {
        url: '/',
        templateUrl: 'root.html'
      })
      ;

导航到“/”将显示profile.html而不是root.html。导航到“/windy”将正确显示profile.html。

您将静态置于动态之前,就像您所做的那样。这些是州。所以我看不出它们冲突的原因,因为您正在使用ui sref='home'等,对吗?。如果您有一个名为“home”的用户名,那么这些URL可能是相同的,是这样吗?UI路由器将按照定义的顺序状态评估匹配。先赢。但如果我能建议的话:不要依赖这样的东西。我想说,如果第二个url是/profile/profileName,您的用户不会太在意。。。你以后将无法解决布线的问题。在我看来,这个设计是错误的;您还必须检查用户名不能为home,这是一个任意限制。将用户放在自己的URL下似乎更好,例如“/profile/:username”。@Nikos不幸的是,这是不可能的。我必须显示/:用户名。比如facebook如何管理他们的个人资料页面URL。