Javascript ui路由器Go创建双路径元素
我在我的angular Meteor项目中使用UI路由器。 当我在route/search中,想要重新定位到/search/:term(例如/search/starwars)并且我在控制器中使用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
$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'