【发布时间】:2014-06-28 18:27:34
【问题描述】:
我有一个页面,其布局如下所示: 左侧有一个嵌套导航。在这种情况下,它显示:
- 库列表(l1、l2、l3)。目前已选择 l1
- 图书馆 (1) 中的书籍列表 (b1, b2)
- 书中包含的页面列表(p1、p2、p3)
如果选择了图书馆,则显示图书馆中书籍的列将自动更新。选择一本书时,页面列将自动更新为该书中的所有页面等...
除此之外,还有一个主视图,它显示当前选定实体的其他详细信息。在这种情况下第 2 页(p2):
________________________________
|*l1 | b1 | p1 | |
|----|----|----| |
| l2 |*b2 |*p2 | Main View |
|----|----|----| (p2 details) |
| l3 | | p3 | |
--------------------------------
这是仅选择库时的附加视图。它会在侧边栏中显示所选图书馆、该图书馆中的所有书籍,并在主视图中显示有关该图书馆的详细信息。
________________________________
|*l1 | b1 | |
|----|----| |
| l2 | b2 | Main View |
|----|----| (l1 details) |
| l3 | | |
--------------------------------
或者当只选择一本书时:
________________________________
|*l1 | b1 | p1 | |
|----|----|----| |
| l2 |*b2 | p2 | Main View |
|----|----|----| (b2 details) |
| l3 | | p3 | |
--------------------------------
因此,例如选择库时,主要有两个工作:
- 显示图书馆中的所有书籍(导航)
- 显示有关所选库(主)的详细信息
通过以下方式使用嵌套路由时,导航本身可以正常工作:
Router.map(function() {
this.resource('libraries', { path: '/libraries' }, function() {
this.resource('books', { path: ':library'}, function() {
this.resource('pages', { path: ':book'});
});
});
});
在 pages 路由中,我只获取所选图书馆的所有书籍并将其渲染到侧边栏出口:
export default Ember.Route.extend({
model: function (params) {
return this.store.find('book', {song: params.library});
},
renderTemplate: function() {
this.render({ outlet: 'sidebar-books' });
}
});
但是,现在我在尝试将有关当前所选图书馆、书籍或页面的详细信息呈现到主视图和侧边栏视图时遇到了困难。
我发现我可以向renderTemplate 函数添加一个额外的render 调用,这让我可以将其他内容呈现到主视图,但是我不知道如何检索我想从中显示的实体商店,因为不会调用任何其他路线。
为什么要这样做?
【问题讨论】:
标签: ember.js