我是新手,遇到问题并无法在线找到答案。
我有一个collectionView
App.MyView = Ember.CollectionView.extend({
itemViewClass: 'App.MyViewItem',
contentBinding: 'controller'
});
和itemViewClass
App.MyViewItem = Ember.View.extend({
templateName: 'mytemplate'
});
模板看起来像这样:
<div {{action 'select' view.content}}>{{view.content.name}}</div>
{{outlet detail}}
</div>
这样可以很好地生成内容列表。
在控制器中,我有一个动作:
select: function(evt){
this.transitionToRoute('item', evt);
}
我想要做的是在选择项目(工作正常)时转换到嵌套路线,并将所选项目的更多数据加载到{{outlet detail}}。虽然我可以将“项目”路线的内容加载到例如application.hbs,我不知道如何引用所选collectionView项的插座,以便在现有视图中显示详细内容。
我试图使用:
this.render('item', {
outlet: 'detail',
into: '????'
});
项目路径中的,但我不知道如何引用collectionview项目模板。
也许还有一种更容易的方法是从项目视图中的项目加载更多数据(同时更改路径)。任何帮助将不胜感激。
答案 0 :(得分:0)
为什么不直接转换到'item.details',删除指定的插座,将其更改为插座,并在您的资源下添加路由。
然后,恩伯完成了决定渲染什么和在哪里的重任。对于可能不存在的组件,命名出口似乎有点复杂(如果它可以工作)。作为旁注,您是否尝试排除into参数,或者说:'mytemplate'?
答案 1 :(得分:0)
你真正希望在这里做的不是使用Ember.CollectionView,而是在你的路由器中有MyItems的资源,然后有两条路线:App.MyItemsIndexRoute和App.MyItemsRoute。
这是一个要点,说明如何设置路由器,路由,控制器和模板:
https://gist.github.com/anonymous/7051432
对于要点中的示例,我们的“项目”是项目。
Ember模板非常强大,您很少需要使用视图。 See ember guides on views.
Ember.js中的视图通常仅出于以下原因创建:
当您需要复杂的用户事件处理时 创建一个可重用的组件