My EmberApp has Dynamic segments loaded under a resource. The corresponding controller for the dynamic segment is an ArrayController. As most of you would know, simple #each looping through the controllers content or model in the template layer will render the content as it should. And in my case it does, except I need to use a 'CollectionView' which in turn defines a collection of child views. The reason being that I need to perform add/remove these views depending on user actions. So short story, my code looks like this:
<script type="text/x-handlebars" data-template-name="dynamicSegment">
{{view App.CollectionView}}
</script>
App.CollectionView = Ember.CollectionView.extend({
tagName: "ul" // does not have a template corresponding to it, but is generated automagically ?
itemViewClass: Ember.ChildView.extend(),
didInsertElement:function(){
this.set('content', this.get('controller').get('content')); // notice that I am setting up the content for this view in the didInsertElement method, this could be wrong, but I know no other way
},
});
App.ChildView = Ember.View.extend({
templateName:"_childView" // has a template defined within handlebars
});
<script type="text/javascript" data-template-name="_childView">
<div>{{view.content.modelProperty1}}</div> <!-- notice how I have to actually use view.content.modelProperty1 instead of simply modelProperty1
</script>
The above, as you can tell is a slightly unconventional way to render array information in EmberJS, where typically one would simply:
{{#each}}
{{view App.ChildView}}
{{/each}}
and within that ChildView,
<div>{{modelProperty1}}</div>
THe problem with using collection views seems to be that Ember is caching these views, essentially, when I transition into a new dynamic segment like from /1 to /2 then /2 still renders the same content that was first displayed in the /1 dynamic segment.
What should I be doing or what should I not be doing ?
So for anyone who happens to stumble upon this in the future, if you utilized a collectionView to render elements in a dynamic segment instead of a handlebars each statement, be sure to set the 'contentBinding' property like this
Otherwise your content remains static as you enter different segments of your dynamic segment.
Mark this as the correct answer Or give it a +1 if this was helpful