How to render hasMany associations each with their own controller

匿名 (未验证) 提交于 2019-12-03 08:30:34

问题:

So my models are set up like this :

App.Post = DS.Model.extend   comments: DS.hasMany 'App.Comment'  App.Comment = DS.Model.extend   post: DS.belongsTo 'App.Post' 

I'm trying to create a view that has all posts and all comments display, but I need to decorate the comment objects.

This is what I'd like to do but, to no avail :

<ul>   {{#each post in controller}}     <li>{{post.title}}</li>     <ol>       {{#each comment in post.comments itemController="comment"}}         <li>{{comment.body}}</li>       {{/each}}     </ol>   {{/each}} </ul> 

Properties defined in a App.CommentController are simply not found by the template.

I suspect that Ember.OrderedSet does not implement the itemController param - is there a workaround for this?

回答1:

You need to use the new expiremental control tag. This will load the view and controller for the specified type:

<ul>   {{#each post in controller}}     <li>{{post.title}}</li>     <ol>       {{#each comment in post.comments}}         {{ control "comment" comment }}       {{/each}}     </ol>   {{/each}} </ul> 

You will need to enable this expiremental feature first. Put this before ember is loaded:

<script type='application/javascript'>     ENV = {         EXPERIMENTAL_CONTROL_HELPER: true     }; </script> 

Also, you will need to specify that the controller for comments should not be a singleton, otherwise there will only be one controller instantiated for all comment views:

// this is needed to use control handlebars template properly per // https://github.com/emberjs/ember.js/issues/1990 App.register('controller:comment', App.CommentController, {singleton: false }); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!