我目前正在尝试使用LinkTo
通过使用{{outlet}}
标记渲染到另一个新页面的另一个嵌套路由。
我有一个论坛route
,并且嵌套了forum details
路线
在论坛模板中:
<LinkTo @route="main.forum.forum-details" @model={{post}}>{{post.title}}</LinkTo>
{{outlet}}
如上图。嵌套的路线将在底部而不是新页面上呈现。我要如何将其渲染到新页面?我以为LinkTo
实际上会将其链接到新页面,对吗?并且论坛详细信息应该在{{outlet}}
标签处呈现,那么我应该在哪里放置{{outlet}}
标签以使其呈现到新页面?
您的问题是您需要了解nested routes。
如果您的路线是main.forum.forum-details
,则意味着您的路由器看起来像这样:
this.route('main', function() {
this.route('forum', function() {
this.route('forum-details');
});
});
因此forum
路由是forum-details
路由的父路由。
并且在访问子路线时,必须理解父路线始终可见]很重要。
因此main.forum.forum-details
余烬将渲染application
路线,在其{{outlet}}
内部将渲染forum
路线,而在{{outlet}}
内部将渲染forum-details
路线。
因此,如果要任一
forum
或 forum-details
路线,则可以重组路线:this.route('main', function() { this.route('forum'); this.route('forum-details'); });
或者您可以将
forum
路线中当前的位置移动到forum.index
路线中。如果某个路由包含子路由,并且没有一个子路由处于活动状态,则将始终有一个可以使用的index
激活路由。
我已经按照Ember Discussion的指南解决了这个问题>