This is probably best solved using nested views. You can see my jsFiddle here .
I don't think this is a very complicated approach, but if you have any design questions, please let me know.
Steering wheels:
<script type="text/x-handlebars"> {{#each App.countriesController}} {{view Ember.Checkbox titleBinding="name" valueBinding="isChecked"}} {{/each}} <hr /> {{#each App.countriesController}} {{#if isChecked}} {{view App.PartsByCountryView contentBinding="this" partsListBinding="App.partsController"}} <br /> {{/if}} {{/each}} </script> <script type="text/x-handlebars" data-template-name="selected-country"> Country: {{content.name}} <br /> Parts: {{#each filteredParts}} {{name}} {{/each}} </script>
Application Code:
window.App = App = Ember.Application.create(); App.Country = Ember.Object.extend({ id: null, name: "", isChecked: null }); App.Part = Ember.Object.extend({ id: null, name: "", countryId: null }); App.PartsByCountryView = Ember.View.extend({ content: null, partsList: null, templateName: 'selected-country', filteredParts: function() { return this.get("partsList").filterProperty('countryId', this.getPath('content.id')) }.property(' partsList.@each ').cacheable() }); App.set('countriesController', Ember.ArrayController.create({ content: Ember.A() })); App.set('partsController', Ember.ArrayController.create({ content: Ember.A() })); $(function() { App.get('countriesController').pushObjects([ App.Country.create({id: 1, name: "USA"}), App.Country.create({id: 2, name: "UK"}), App.Country.create({id: 3, name: "FR"}) ]); App.get('partsController').pushObjects([ App.Part.create({id: 1, name: "part1", countryId: 1}), App.Part.create({id: 2, name: "part2", countryId: 1}), App.Part.create({id: 3, name: "part3", countryId: 1}), App.Part.create({id: 4, name: "part4", countryId: 2}), App.Part.create({id: 5, name: "part5", countryId: 2}), App.Part.create({id: 6, name: "part6", countryId: 2}), App.Part.create({id: 7, name: "part7", countryId: 2}), App.Part.create({id: 8, name: "part8", countryId: 3}), App.Part.create({id: 9, name: "part9", countryId: 3}), App.Part.create({id: 10, name: "part10", countryId: 3}), App.Part.create({id: 11, name: "part11", countryId: 3}) ]); });