Javascript ui路由器Go创建双路径元素

Javascript ui路由器Go创建双路径元素,javascript,angularjs,routing,angular-ui-router,angularjs-routing,Javascript,Angularjs,Routing,Angular Ui Router,Angularjs Routing,我在我的angular Meteor项目中使用UI路由器。 当我在route/search中,想要重新定位到/search/:term(例如/search/starwars)并且我在控制器中使用 $state.go( 'private.search.feed', { term: 'starwars' } ) 然后,我的浏览器中的URL变为/search/search/starwars,而不是/search/starwars 我的路线设置(我有两个布局,因此是抽象视图) 当我把路线改成 .sta

我在我的angular Meteor项目中使用UI路由器。 当我在route/search中,想要重新定位到/search/:term(例如/search/starwars)并且我在控制器中使用

$state.go( 'private.search.feed', { term: 'starwars' } )
然后,我的浏览器中的URL变为
/search/search/starwars
,而不是
/search/starwars

我的路线设置(我有两个布局,因此是抽象视图)

当我把路线改成

.state 'private.searchFeed',
    url: '/search/:term'
    views:
      "container@private":
        templateUrl:  'client/views/search/feed/feed.html'
        controller:   'searchCtrl'
打电话

$state.go( 'private.searchFeed', { term: 'starwars' } )
url是正确的

我想我在第一次设置中定义了一个子状态,但我不明白为什么它会在URL中重复
search


有什么想法吗?

private.search.feed
状态url应该是
'/:term'
,因为父状态的url在从它派生的状态中继承。由于您的派生状态必须类似于
/:term
显然将通过
/search/:term

代码

.state 'private.search.feed',
    url: '/:term'
    views:
      "container@private":
        templateUrl:  'client/views/search/feed/feed.html'
        controller:   'searchCtrl'
在状态名称中使用点向
ui-router
表明它是由点路径定义的任何状态的子状态。例如:

State 1: home (/home)
State 2: home.dashboard (/home/dashboard)
State 3: home.dashboard.settings (/home/dashboard/settings)
无法创建名为
home.dashboard.settings.save
的新状态4,因为状态4的点路径指示它应该从状态3继承,因此其路由不以给定给状态3的URL开头

因此您需要确保子状态的URL不会重复其父状态的URL:

.state 'private.search.feed',
    url: '/:term'

祝各位绅士们,非常感谢。当我阅读ui router上的文档时,我没有得到这一部分,但现在家长、孩子、兄弟姐妹关系图更有意义:)@Mattijs很高兴帮助您..请随意接受答案..有多个选项可接受...)祝各位绅士们,非常感谢。当我在ui路由器上阅读文档时,我没有得到这一部分,但现在父、子、兄弟关系图更有意义:)
.state 'private.search.feed',
    url: '/:term'