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?
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 });