流星:铁路线不对路
Meteor: Iron route not to the right route
所以我有一个导航栏,我已经进入了 "Games" 中一个名为 "Cross" 的子目录,所以,/games/cross。现在从那个页面,我试图从导航栏再次访问游戏页面,但它显示 /games/games... 我该如何解决这个问题?我有以下...
Router.configure({
layoutTemplate: 'layoutDefault'
});
Router.route('/', function(){
this.render('main');
});
Router.route('/contact', {
template: 'contact'
});
Router.route('/games', {
template: 'games'
});
Router.route('/games/cross', {
action: function() {
if(Roles.userIsInRole(Meteor.user(), ['normal' , 'admins'])) {
this.render('cross')
}
else
this.render('denied')
}
});
如果我的理解是正确的,进入 /games/cross
页面后,您使用导航栏尝试导航回 /games
页面,但您的浏览器地址栏现在显示 /games/games
而不仅仅是 /games
,并且您的路由器可能什么都不做? (或转到您为未找到的路由配置的任何内容)
这可能是导航栏 link 中的一个问题:您是否尝试过在 href
属性值的开头添加斜杠 /
,以便link 是相对于您的域,而不是当前页面?
<a href="/games">Games</a>
而不是:
<a href="games">Games</a>
您还可以使用辅助函数 pathFor
,其中 returns 任何路由的 URL 路径组件。
语法
{{pathFor 'path name'}}
要使用 pathFor
,您必须在路线中添加 name
属性。
Router.route('/contact', {
name: 'content-view'
template: 'contact'
});
<a href="{{pathFor 'content-view'}}">contact</a>
因此,如果您决定更改路线,则无需手动更新所有链接。
所以我有一个导航栏,我已经进入了 "Games" 中一个名为 "Cross" 的子目录,所以,/games/cross。现在从那个页面,我试图从导航栏再次访问游戏页面,但它显示 /games/games... 我该如何解决这个问题?我有以下...
Router.configure({
layoutTemplate: 'layoutDefault'
});
Router.route('/', function(){
this.render('main');
});
Router.route('/contact', {
template: 'contact'
});
Router.route('/games', {
template: 'games'
});
Router.route('/games/cross', {
action: function() {
if(Roles.userIsInRole(Meteor.user(), ['normal' , 'admins'])) {
this.render('cross')
}
else
this.render('denied')
}
});
如果我的理解是正确的,进入 /games/cross
页面后,您使用导航栏尝试导航回 /games
页面,但您的浏览器地址栏现在显示 /games/games
而不仅仅是 /games
,并且您的路由器可能什么都不做? (或转到您为未找到的路由配置的任何内容)
这可能是导航栏 link 中的一个问题:您是否尝试过在 href
属性值的开头添加斜杠 /
,以便link 是相对于您的域,而不是当前页面?
<a href="/games">Games</a>
而不是:
<a href="games">Games</a>
您还可以使用辅助函数 pathFor
,其中 returns 任何路由的 URL 路径组件。
语法
{{pathFor 'path name'}}
要使用 pathFor
,您必须在路线中添加 name
属性。
Router.route('/contact', {
name: 'content-view'
template: 'contact'
});
<a href="{{pathFor 'content-view'}}">contact</a>
因此,如果您决定更改路线,则无需手动更新所有链接。